MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশন তৈরির সময়, Message Handling একটি গুরুত্বপূর্ণ বিষয়। MFC তে, উইন্ডো এবং কন্ট্রোলগুলোর সাথে ইন্টারঅ্যাকশন করার জন্য Messages ব্যবহার করা হয়। এই Messages সাধারণত ব্যবহারকারীর অ্যাকশন (যেমন ক্লিক, টাইপিং, স্ক্রল করা ইত্যাদি) এর ফলস্বরূপ তৈরি হয়, এবং সেগুলি Message Handlers দ্বারা প্রক্রিয়া করা হয়। এখানে Dialog এবং Control এর সাথে সম্পর্কিত Message Handling পদ্ধতি আলোচনা করা হলো।
Dialog এর Message Handling
Dialog Box MFC অ্যাপ্লিকেশনগুলোর একটি গুরুত্বপূর্ণ অংশ, যেখানে সাধারণত বিভিন্ন কন্ট্রোল (যেমন বাটন, এডিট বক্স, লেবেল ইত্যাদি) থাকে। Dialog তে Message Handling এর মাধ্যমে ব্যবহারকারীর ইনপুট বা অ্যাকশনগুলো সঠিকভাবে প্রক্রিয়া করা হয়।
MFC তে Dialog Box-এর Message Handling সাধারণত ON_COMMAND, ON_BN_CLICKED, ON_WM_PAINT ইত্যাদি ম্যাক্রো দিয়ে পরিচালিত হয়। এগুলোর মাধ্যমে বিভিন্ন ইভেন্ট বা মেসেজ হ্যান্ডেল করা হয়।
Message Map:
MFC তে, Message Map একটি ম্যাক্রো হিসেবে ব্যবহৃত হয়, যা উইন্ডো বা কন্ট্রোল থেকে আসা মেসেজ এবং তাদের হ্যান্ডলার ফাংশনগুলির মধ্যে সংযোগ স্থাপন করে। এটি ব্যবহার করে আপনি একটি মেসেজকে একটি নির্দিষ্ট ফাংশনের সাথে যুক্ত করতে পারেন।
Code Example:
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_OK, &CMyDialog::OnBnClickedOk)
ON_WM_PAINT()
END_MESSAGE_MAP()
void CMyDialog::OnBnClickedOk()
{
AfxMessageBox(_T("OK Button Clicked"));
}
void CMyDialog::OnPaint()
{
CPaintDC dc(this); // Device context for painting
// Custom paint code here
}
এখানে, OnBnClickedOk() ফাংশনটি IDC_BUTTON_OK বাটনে ক্লিক করার সময় কল হবে এবং OnPaint() ফাংশনটি পেইন্ট মেসেজ হ্যান্ডেল করবে।
Control এর Message Handling
MFC তে, কন্ট্রোলের মেসেজ হ্যান্ডলিংও সঠিকভাবে পরিচালনা করা প্রয়োজন। যেমন, Button, Edit Control, Combo Box ইত্যাদি কন্ট্রোলগুলির সঙ্গে বিভিন্ন মেসেজ হ্যান্ডল করা হয়, যেমন ক্লিক, পরিবর্তন, সিলেকশন পরিবর্তন ইত্যাদি।
- Button Controls: একটি বাটনে ক্লিক করার জন্য ON_BN_CLICKED ম্যাক্রো ব্যবহৃত হয়।
- Edit Controls: এডিট কন্ট্রোলে টাইপ করার জন্য EN_CHANGE বা EN_UPDATE ম্যাক্রো ব্যবহার করা হয়।
- Combo Box: কম্বো বক্সে সিলেকশন পরিবর্তন হলে CBN_SELCHANGE ম্যাক্রো ব্যবহৃত হয়।
Button Control-এর Message Handling
যখন ব্যবহারকারী একটি বাটন ক্লিক করেন, তখন একটি BN_CLICKED মেসেজ ট্রিগার হয়। এই মেসেজটি সেই বাটনের Message Handler দ্বারা প্রক্রিয়া করা হয়।
Code Example:
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &CMyDialog::OnButtonClicked)
END_MESSAGE_MAP()
void CMyDialog::OnButtonClicked()
{
AfxMessageBox(_T("Button Clicked"));
}
এখানে, OnButtonClicked() ফাংশনটি IDC_BUTTON1 বাটন ক্লিক করার সময় কল হবে এবং একটি বার্তা প্রদর্শন করবে।
Edit Control-এর Message Handling
এডিট কন্ট্রোলে ব্যবহারকারীর ইনপুট পরিবর্তন হলে EN_CHANGE বা EN_UPDATE মেসেজ হ্যান্ডল করা হয়।
Code Example:
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_EN_CHANGE(IDC_EDIT_TEXT, &CMyDialog::OnEditChange)
END_MESSAGE_MAP()
void CMyDialog::OnEditChange()
{
CString str;
m_editBox.GetWindowText(str);
AfxMessageBox(_T("Text changed: ") + str);
}
এখানে, OnEditChange() ফাংশনটি IDC_EDIT_TEXT এডিট কন্ট্রোলে কোনো পরিবর্তন ঘটলে কল হবে এবং ব্যবহারকারীর টেক্সট প্রদর্শন করবে।
Control-এর Different Messages
MFC তে বিভিন্ন কন্ট্রোলের জন্য অনেক ধরনের মেসেজ হ্যান্ডলিংয়ের উপায় রয়েছে। কিছু সাধারণ মেসেজ হ্যান্ডলিং পদ্ধতি:
- Button: ON_BN_CLICKED, ON_BN_DOUBLECLICKED
- Edit Control: EN_CHANGE, EN_UPDATE, EN_KILLFOCUS
- Combo Box: CBN_SELCHANGE, CBN_EDITCHANGE
- List Box: LBN_SELCHANGE, LBN_DBLCLK
সারাংশ
Dialog এবং Control এর Message Handling MFC অ্যাপ্লিকেশন তৈরির গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর ইন্টারঅ্যাকশন সঠিকভাবে প্রক্রিয়া করে। Message Map ব্যবহার করে, বিভিন্ন কন্ট্রোল বা উইন্ডো থেকে আসা মেসেজগুলো তাদের সঠিক Message Handlers এর সাথে যুক্ত করা হয়। এটি MFC এর ইভেন্ট-ড্রিভেন আর্কিটেকচারের একটি গুরুত্বপূর্ণ দিক, যা অ্যাপ্লিকেশনকে ইউজার ইন্টারফেসের মাধ্যমে ইন্টারঅ্যাক্টিভ ও রেসপন্সিভ করে তোলে।
Read more