MFC (Microsoft Foundation Classes) তে Child Window এবং Parent Window দুটি গুরুত্বপূর্ণ ধারণা, যা উইন্ডো-ভিত্তিক অ্যাপ্লিকেশনের মধ্যে সম্পর্ক স্থাপন করে। এরা সাধারণত হায়ারার্কিক্যাল আর্কিটেকচার অনুযায়ী কাজ করে, যেখানে একটি Parent Window অনেকগুলি Child Window ধারণ করতে পারে।
Parent Window কী?
Parent Window হলো একটি উইন্ডো যা অন্য উইন্ডোগুলিকে ধারণ করে এবং নিয়ন্ত্রণ করে। এটি সাধারণত Main Window বা Frame Window হিসাবে কাজ করে, যা মূল অ্যাপ্লিকেশন উইন্ডোর কার্যকারিতা এবং রেন্ডারিং পরিচালনা করে। Parent Window তে অন্য ছোট উইন্ডোগুলি Child Windows হিসেবে যুক্ত হতে পারে, যেমন ডায়ালগ, পপ-আপ উইন্ডো, অথবা অন্যান্য কন্ট্রোলস।
Parent Window সাধারণত উইন্ডোর নিজস্ব ডিভাইস কন্টেক্সট, ইনপুট এবং উইন্ডো মেসেজগুলি পরিচালনা করে।
Code Example:
CMainFrame *pMainFrame = (CMainFrame*) AfxGetMainWnd(); // Parent window হল Main Frame
এখানে, CMainFrame হল Parent Window, যা অ্যাপ্লিকেশনের মূল উইন্ডো হিসেবে কাজ করছে।
Child Window কী?
Child Window হলো একটি উইন্ডো যা একটি Parent Window এর অধীনে কাজ করে এবং নির্দিষ্ট একটি অংশে রেন্ডার বা কাজ করে। Child Window সাধারণত একটি প্যানেল, ডায়ালগ বক্স, কন্ট্রোলস, অথবা মেনু হিসেবে কাজ করতে পারে, যা Parent Window এর একাংশ হিসেবে থাকে।
Child Windows অন্য উইন্ডো (Parent Window) এর সীমানার মধ্যে অবস্থান করে, এবং এগুলোর কন্ট্রোল সাধারণত Parent Window দ্বারা পরিচালিত হয়।
Code Example:
CDialogEx myChildDlg;
myChildDlg.Create(IDD_CHILD_DIALOG, pMainFrame); // Child window
এখানে, myChildDlg হল একটি Child Window, যা IDD_CHILD_DIALOG ডায়ালগ টেমপ্লেটের মাধ্যমে Parent Window তে তৈরি হয়েছে।
Parent এবং Child Window এর মধ্যে সম্পর্ক
Parent Window এবং Child Window এর মধ্যে সম্পর্ক Hierarchy-based (হায়ারার্কিক্যাল) হয়। Parent Window এক বা একাধিক Child Window ধারণ করতে পারে এবং তাদের মধ্যে কমিউনিকেশন এবং কন্ট্রোল শেয়ার করা হয়।
1. Child Window কে Parent Window তে যুক্ত করা
MFC তে Child Window কে Parent Window এর মধ্যে যুক্ত করার জন্য Create অথবা CreateEx ফাংশন ব্যবহার করা হয়। Parent Window, Child Window এর অবস্থান, আকার এবং অন্যান্য বৈশিষ্ট্য সেট করতে পারে।
Code Example:
CChildWnd* pChildWnd = new CChildWnd;
pChildWnd->Create( IDD_CHILD_WINDOW, pParentWnd );
এখানে, CChildWnd হল Child Window ক্লাস, যা Parent Window (pParentWnd) এর অধীনে তৈরি করা হয়েছে।
2. Child Window এর ইভেন্ট Parent Window দ্বারা হ্যান্ডলিং
Child Window তে যেকোনো ব্যবহারকারী ইন্টারঅ্যাকশন বা ইভেন্ট (যেমন বাটন ক্লিক) ঘটলে, সেই ইভেন্ট সাধারণত Parent Window বা তার Controller (কন্ট্রোলার ক্লাস) দ্বারা হ্যান্ডল করা হয়। উদাহরণস্বরূপ, Parent Window ইভেন্টের জন্য কোড লিখে Child Window এর পরিবর্তন রেন্ডার করতে পারে।
Code Example:
void CMainFrame::OnCommand(UINT nID)
{
if (nID == ID_CHILD_BUTTON)
{
// Handle the Child Window's button click event
}
}
এখানে, Parent Window ইভেন্ট হ্যান্ডলার OnCommand মেথডে Child Window এর বাটন ক্লিক ইভেন্ট হ্যান্ডল করছে।
Parent এবং Child Window এর মধ্যে ডেটা শেয়ার
Parent Window এবং Child Window এর মধ্যে ডেটা শেয়ার করার জন্য বিভিন্ন পদ্ধতি ব্যবহার করা যেতে পারে, যেমন:
- Direct Function Calls: Parent Window Child Window এর মেথড কল করে ডেটা পাস করতে পারে।
- Message Passing: Parent এবং Child Window এর মধ্যে মেসেজ পাস করে ডেটা শেয়ার করা যায়।
- Shared Variables: একই অ্যাপ্লিকেশনে থাকা Parent এবং Child Window একই ভেরিয়েবল শেয়ার করতে পারে।
Code Example (Message Passing):
// Parent Window sends a message to Child Window
SendMessage(WM_USER_UPDATE, 0, (LPARAM)"Updated Data");
এখানে, Parent Window Child Window কে WM_USER_UPDATE মেসেজ পাঠাচ্ছে যা Child Window তে ডেটা আপডেট করতে পারে।
Parent এবং Child Window এর মধ্যে ডায়ালগ সম্পর্ক
MFC তে Dialog Box একটি Child Window হিসেবে কাজ করে, যেখানে Parent Window ইভেন্ট এবং ডেটা নিয়ন্ত্রণ করে। সাধারণত ডায়ালগ বক্সের মাধ্যমে ইনপুট নেওয়া হয়, এবং Parent Window সেই ইনপুট ডেটা প্রক্রিয়া করে।
Code Example:
CMyDialog myDlg;
if (myDlg.DoModal() == IDOK)
{
CString str = myDlg.GetData(); // Parent Window ডায়ালগের ডেটা গ্রহণ করবে
}
এখানে, CMyDialog একটি Child Window (ডায়ালগ) হিসেবে Parent Window এর মধ্যে তৈরি করা হয়েছে এবং Parent Window তার ডেটা গ্রহণ করেছে।
সারাংশ
Parent Window এবং Child Window হল MFC অ্যাপ্লিকেশনের দুটি মূল উইন্ডো কনসেপ্ট, যেখানে Parent Window একটি মূল উইন্ডো হিসেবে কাজ করে এবং অনেকগুলি Child Window ধারণ করতে পারে। Parent Window অন্যান্য Child Window গুলির নিয়ন্ত্রণ এবং ইনপুট পরিচালনা করে। তাদের মধ্যে সম্পর্ক Hierarchy-based এবং Message Passing এর মাধ্যমে কাজ করে, যার ফলে একটি উইন্ডো আরেকটির উপর নির্ভরশীল হয়। Child Window সাধারণত ব্যবহারকারী ইন্টারঅ্যাকশন বা ইনপুট গ্রহণ করে এবং Parent Window সেই ইনপুট প্রক্রিয়া করে।
Read more