MFC (Microsoft Foundation Classes) ব্যবহার করে ডায়ালগ বেজড অ্যাপ্লিকেশন তৈরি করা একটি সাধারণ প্রক্রিয়া, যেখানে অ্যাপ্লিকেশনটির প্রধান ইন্টারফেস একটি ডায়ালগ বক্স হয়ে থাকে। এই ধরনের অ্যাপ্লিকেশনগুলো সাধারণত ছোট, সিম্পল ইউজার ইন্টারফেস (UI) অ্যাপ্লিকেশন, যেখানে ব্যবহারকারী ইনপুট দেয় এবং কমান্ড বা কন্ট্রোলের মাধ্যমে সিস্টেমের সাথে ইন্টারঅ্যাক্ট করে।
ডায়ালগ বেজড অ্যাপ্লিকেশনে, সমস্ত UI কন্ট্রোল যেমন বাটন, এডিট বক্স, চেকবক্স ইত্যাদি একটি ডায়ালগ উইন্ডোতে থাকে এবং প্রতিটি কন্ট্রোলের সাথে নির্দিষ্ট ইভেন্ট বা ফাংশন যুক্ত থাকে। এই ধরনের অ্যাপ্লিকেশন সাধারণত Message Map এবং Event Handling এর মাধ্যমে কাজ করে।
ডায়ালগ বেজড অ্যাপ্লিকেশন তৈরির প্রক্রিয়া
1. প্রজেক্ট তৈরি করা
ডায়ালগ বেজড অ্যাপ্লিকেশন তৈরি করার প্রথম পদক্ষেপ হলো একটি নতুন MFC প্রজেক্ট তৈরি করা। Visual Studio তে, MFC অ্যাপ্লিকেশন তৈরি করতে নিচের স্টেপগুলো অনুসরণ করতে হবে:
- File > New > Project নির্বাচন করুন।
- MFC Application নির্বাচন করুন এবং Dialog Based অপশনটি চেক করুন।
- প্রজেক্টের নাম এবং লোকেশন নির্বাচন করুন।
- উইজার্ড থেকে প্রয়োজনীয় সেটিংস কনফিগার করুন এবং Finish ক্লিক করুন।
এই প্রক্রিয়া শেষ হলে, একটি ডায়ালগ বেজড অ্যাপ্লিকেশন তৈরি হয়ে যাবে, যেখানে ডিফল্ট ডায়ালগ উইন্ডো এবং কিছু বেসিক কন্ট্রোল (যেমন, বাটন, টেক্সট, ইত্যাদি) থাকবে।
2. ডায়ালগ বক্স ডিজাইন করা
ডায়ালগ বক্স ডিজাইন করার জন্য Visual Studio তে Resource View এ গিয়ে ডায়ালগ উইন্ডোটি সিলেক্ট করতে হবে। সেখানে বিভিন্ন কন্ট্রোল যেমন Button, Edit Box, Static Text ইত্যাদি যোগ করা যায়।
- Properties Window তে গিয়ে কন্ট্রোলের প্রোপার্টি পরিবর্তন করতে পারেন, যেমন টেক্সট, সাইজ, পজিশন ইত্যাদি।
- কন্ট্রোলের আইডেন্টিফায়ার (যেমন
IDC_BUTTON_OK,IDC_EDIT_NAME) সেট করতে হবে যাতে কোডে কন্ট্রোলগুলোকে রেফারেন্স করা যায়।
3. কোড লেখার প্রক্রিয়া
ডায়ালগ বেজড অ্যাপ্লিকেশনে, প্রতিটি কন্ট্রোলের সাথে ইভেন্ট হ্যান্ডলিং যুক্ত করতে হয়। Message Map ব্যবহার করে ইভেন্ট হ্যান্ডলিং করা হয়, যেখানে আপনি কন্ট্রোলের ইভেন্ট যেমন Click, Change, Focus ইত্যাদি পরিচালনা করতে পারেন।
Message Map ব্যবহার করে বাটনের ক্লিক ইভেন্ট হ্যান্ডল করার উদাহরণ:
Header File (.h):
class CMyDialog : public CDialogEx
{
public:
CMyDialog(CWnd* pParent = nullptr); // standard constructor
enum { IDD = IDD_MYDIALOG }; // dialog ID
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnButtonClick(); // Button click event handler
};
Source File (.cpp):
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON_OK, &CMyDialog::OnButtonClick) // Mapping button click event
END_MESSAGE_MAP()
void CMyDialog::OnButtonClick()
{
AfxMessageBox(_T("Button Clicked!"));
}
এই কোডে, যখন বাটন ক্লিক করা হবে, তখন OnButtonClick() ফাংশন কল হবে এবং একটি মেসেজ বক্স প্রদর্শিত হবে।
4. ডায়ালগ বক্স রান এবং দেখানো
ডায়ালগ বক্স চালানোর জন্য আপনাকে DoModal() ফাংশন ব্যবহার করতে হবে, যা ডায়ালগ উইন্ডোকে মডাল অবস্থায় প্রদর্শন করবে।
Code Example:
CMyDialog dlg; // Create an instance of the dialog
dlg.DoModal(); // Show the dialog as a modal window
এই ফাংশনটি ডায়ালগ উইন্ডোকে চালু করবে এবং ব্যবহারকারী যতক্ষণ পর্যন্ত উইন্ডোটি বন্ধ না করবে, অ্যাপ্লিকেশন থেমে থাকবে।
ডায়ালগ বেজড অ্যাপ্লিকেশনের ফিচার
- Message Map:
MFC এর Message Map একটি বিশেষ ধরণের ম্যাপ যা ইভেন্ট (যেমন বাটন ক্লিক, টেক্সট চেঞ্জ ইত্যাদি) থেকে অ্যাকশন (ফাংশন কল) পর্যন্ত সংযোগ স্থাপন করে। - Data Exchange:
DoDataExchange() ফাংশন ব্যবহার করে UI কন্ট্রোল এবং কোডের মধ্যে ডেটা আদান-প্রদান করা হয়। যেমন, একটি Edit Control এর টেক্সট রিড বা রাইট করা। - Modal vs Non-Modal Dialog:
- Modal Dialog: ডায়ালগটি প্রদর্শিত হলে, ব্যবহারকারীকে অন্য কোনো উইন্ডোতে ইন্টারঅ্যাক্ট করতে দেয়া হয় না।
- Non-Modal Dialog: ডায়ালগ উইন্ডো খোলার পর ব্যবহারকারী অন্যান্য উইন্ডোর সাথে ইন্টারঅ্যাক্ট করতে পারে।
সারাংশ
MFC ডায়ালগ বেজড অ্যাপ্লিকেশন হল এমন অ্যাপ্লিকেশন যেখানে ইউজার ইন্টারফেস (UI) একটি ডায়ালগ উইন্ডোর মধ্যে থাকে। এই ধরনের অ্যাপ্লিকেশনগুলো সাধারণত ছোট আকারের এবং সিম্পল ইন্টারফেসের জন্য ব্যবহৃত হয়, যেখানে ব্যবহারকারী বিভিন্ন কন্ট্রোলের মাধ্যমে ইনপুট দেয় এবং সিস্টেমের সাথে যোগাযোগ করে। MFC তে ডায়ালগ বেজড অ্যাপ্লিকেশন তৈরি করার প্রক্রিয়া বেশ সহজ এবং আপনি Message Map, Data Exchange, এবং Event Handling ব্যবহার করে বিভিন্ন ইভেন্ট এবং ফাংশন ইন্টিগ্রেট করতে পারেন।
MFC (Microsoft Foundation Classes) ব্যবহার করে অ্যাপ্লিকেশন তৈরি করার সময় Dialog Box একটি অত্যন্ত গুরুত্বপূর্ণ অংশ। এটি ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন করতে ব্যবহৃত হয়, যেখানে ব্যবহারকারী তথ্য ইনপুট করতে পারেন বা কোনো বার্তা দেখতে পারেন। MFC তে, Dialog Box তৈরি এবং কাস্টম Dialog তৈরি করার প্রক্রিয়া সরল এবং শক্তিশালী। এখানে Dialog Box এর ব্যবহার এবং Custom Dialog তৈরির পদ্ধতি আলোচনা করা হলো।
Dialog Box এর সাথে কাজ করা
Dialog Box সাধারণত একটি উইন্ডো হয়, যেখানে একাধিক কন্ট্রোলস (যেমন: বাটন, এডিট বক্স, লেবেল ইত্যাদি) থাকে এবং ব্যবহারকারীকে কিছু ইনপুট দিতে বা অপশন নির্বাচন করতে সহায়তা করে। MFC তে Dialog Box তৈরি করার জন্য কয়েকটি পদ্ধতি রয়েছে।
- Dialog Box Creation: সাধারণত MFC এ CDialog ক্লাস ব্যবহার করে Dialog Box তৈরি করা হয়। ডায়ালগ বক্সের কন্ট্রোলস তৈরি এবং তাদের সাথে ইন্টারঅ্যাকশন করতে হলে, প্রথমে একটি ডায়ালগ বক্স ডিজাইন করতে হবে এবং পরে কোডে সেটিকে ব্যবহৃত করতে হবে।
Dialog Box Creation এর সাধারণ পদ্ধতি:
- New Dialog Box তৈরি করা
- ডায়ালগ বক্সের কন্ট্রোলস যোগ করা (যেমন, বাটন, এডিট বক্স)
- কোডে ডায়ালগ বক্সকে ইনস্ট্যান্স করে ব্যবহার করা
Custom Dialog তৈরি
Custom Dialog তৈরি করা মানে হল এমন একটি ডায়ালগ তৈরি করা যা আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী কাস্টমাইজ করা হয়। MFC তে, Custom Dialog তৈরি করতে Resource Editor ব্যবহার করা হয় এবং তারপর C++ কোডে এটি প্রোগ্রাম করা হয়।
Custom Dialog তৈরি করার পদক্ষেপ
- New Dialog Box তৈরি করুন:
- Visual Studio এ একটি নতুন Dialog Box তৈরি করতে, Resource View তে গিয়ে Dialog এ রাইট ক্লিক করুন এবং Add New Resource নির্বাচন করুন।
- এরপর Dialog নির্বাচন করুন এবং একটি নতুন ডায়ালগ তৈরি করুন।
- Dialog Box এ কন্ট্রোল যোগ করা:
- ডায়ালগ বক্স ডিজাইনারে বিভিন্ন কন্ট্রোল (যেমন, বাটন, টেক্সট বক্স, লেবেল) যোগ করতে হবে।
- প্রতিটি কন্ট্রোলের ID ঠিক করে দিন যাতে পরে কোডে তাদের সঠিকভাবে রেফার করা যায়।
- Dialog Class তৈরি করুন:
- Dialog Box এর জন্য একটি C++ ক্লাস তৈরি করুন। Class Wizard এর সাহায্যে একটি ডায়ালগ ক্লাস তৈরি করতে পারবেন, যা আপনার ডায়ালগ বক্সের সাথে যুক্ত হবে।
- ক্লাসের মধ্যে ডায়ালগ বক্সের কন্ট্রোলের জন্য ইভেন্ট হ্যান্ডলিং কোড লিখুন। যেমন, বাটন ক্লিক বা এডিট বক্সের টেক্সট পড়া।
- Dialog Show and Interaction:
- কোডে DoModal() ফাংশন ব্যবহার করে ডায়ালগ বক্সটি প্রদর্শন করুন। এটি ডায়ালগ বক্সটি মডালভাবে দেখাবে, অর্থাৎ ব্যবহারকারী যখন পর্যন্ত ডায়ালগ বক্স বন্ধ না করেন, তখন পর্যন্ত অন্য কোন উইন্ডোতে কাজ করতে পারবেন না।
Custom Dialog Example:
// Dialog class definition
class CCustomDialog : public CDialogEx
{
public:
CCustomDialog(CWnd* pParent = nullptr); // standard constructor
enum { IDD = IDD_CUSTOM_DIALOG }; // dialog box ID
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
private:
CEdit m_editBox;
CButton m_button;
};
// Constructor
CCustomDialog::CCustomDialog(CWnd* pParent)
: CDialogEx(IDD_CUSTOM_DIALOG, pParent)
{
}
void CCustomDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT, m_editBox); // Bind control to variable
DDX_Control(pDX, IDC_BUTTON, m_button); // Bind button
}
BOOL CCustomDialog::OnInitDialog()
{
CDialogEx::OnInitDialog();
// Initialization code here
m_button.SetWindowText(_T("Click Me"));
return TRUE;
}
// On button click handler
BEGIN_MESSAGE_MAP(CCustomDialog, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON, &CCustomDialog::OnBnClickedButton)
END_MESSAGE_MAP()
void CCustomDialog::OnBnClickedButton()
{
CString str;
m_editBox.GetWindowText(str); // Get text from the edit box
AfxMessageBox(str); // Display text in a message box
}
// Main code to show the dialog
void CMainFrame::OnShowCustomDialog()
{
CCustomDialog dlg;
dlg.DoModal(); // Display the dialog
}
সারাংশ
MFC তে Dialog Box ব্যবহার করা খুবই সাধারণ এবং প্রয়োজনীয়। Custom Dialog তৈরি করতে, আপনি প্রথমে ডায়ালগ বক্স ডিজাইন করবেন, পরে C++ কোডে সেই ডায়ালগের জন্য কন্ট্রোলস এবং ইভেন্ট হ্যান্ডলার যুক্ত করবেন। এর ফলে আপনি সম্পূর্ণ কাস্টমাইজড এবং ইন্টারঅ্যাকটিভ ডায়ালগ তৈরি করতে পারবেন, যা আপনার অ্যাপ্লিকেশন ব্যবহারকারীকে আরও উন্নত অভিজ্ঞতা দিতে সহায়তা করবে। DoModal() ফাংশন ব্যবহার করে ডায়ালগ বক্স প্রদর্শন করা হয় এবং কোডের মাধ্যমে ইন্টারঅ্যাকশন পরিচালিত হয়।
MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশন ডেভেলপমেন্টে Modal এবং Modeless Dialogs ব্যবহার করা হয় ইউজারের সাথে ইন্টারঅ্যাকশন তৈরি করতে। এই দুটি ডায়ালগ টাইপের মধ্যে প্রধান পার্থক্য হল, এগুলি কিভাবে অ্যাপ্লিকেশন UI তে কাজ করে এবং ইউজারের সাথে কিভাবে ইন্টারঅ্যাক্ট করে।
Modal Dialog
Modal Dialog এমন একটি ডায়ালগ, যা প্রদর্শিত হলে ব্যবহারকারীকে মূল উইন্ডোতে ফিরে যাওয়ার আগে ডায়ালগটির সাথে ইন্টারঅ্যাক্ট করতে বাধ্য করা হয়। এই ধরনের ডায়ালগগুলো সাধারণত গুরুত্বপূর্ণ তথ্যের জন্য বা ইউজার থেকে কিছু ইনপুট গ্রহণ করার জন্য ব্যবহৃত হয়। Modal Dialog ওপেন করার পর ব্যবহারকারীকে ডায়ালগটি বন্ধ না করা পর্যন্ত অ্যাপ্লিকেশনটির অন্য কোন অংশে কাজ করতে দেয়া হয় না।
- অ্যাপ্লিকেশন ব্লকিং: Modal Dialog ইউজারের সাথে ইন্টারঅ্যাক্ট করার জন্য মূল অ্যাপ্লিকেশন উইন্ডোকে ব্লক করে রাখে।
- ব্যবহার: এটি সাধারণত পপ-আপ ডায়ালগ হিসেবে ব্যবহৃত হয়, যেখানে ইউজারকে একটি সিদ্ধান্ত নিতে হবে, যেমন, "OK" বা "Cancel"।
Code Example:
CMyDialog dlg;
dlg.DoModal(); // এটি Modal Dialog খোলার পদ্ধতি
এখানে CMyDialog হল একটি ডায়ালগ ক্লাস এবং DoModal() মেথডটি ডায়ালগটিকে Modal হিসেবে খোলে।
Modeless Dialog
Modeless Dialog হল একটি ডায়ালগ যা ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করার সময় মূল অ্যাপ্লিকেশন উইন্ডোকে ব্লক করে না। Modeless Dialog ইউজারকে অ্যাপ্লিকেশনটির অন্যান্য অংশে কাজ করতে দেয়, যদিও ডায়ালগটি খোলা থাকে। এটি সাধারণত সাইডবার, টুলবার বা তথ্য প্রদর্শনকারী উইন্ডো হিসেবে ব্যবহৃত হয়।
- অ্যাপ্লিকেশন ব্লকিং নয়: Modeless Dialog ব্যবহারকারীকে মূল অ্যাপ্লিকেশন উইন্ডোতে ফিরে গিয়ে অন্য কাজ করতে দেয়।
- ব্যবহার: এটি সাধারণত পাল্টানো ডায়ালগ বা নিরবচ্ছিন্ন ইউজার ইন্টারফেস হিসেবে ব্যবহৃত হয়।
Code Example:
CMyDialog dlg;
dlg.Create(IDD_MYDIALOG, pParentWnd); // এটি Modeless Dialog খোলার পদ্ধতি
dlg.ShowWindow(SW_SHOW);
এখানে CMyDialog হল একটি ডায়ালগ ক্লাস এবং Create() মেথডটি ডায়ালগটিকে Modeless হিসেবে খোলে। ShowWindow() মেথড দিয়ে ডায়ালগটি প্রদর্শিত হয়।
পার্থক্য
| বৈশিষ্ট্য | Modal Dialog | Modeless Dialog |
|---|---|---|
| অ্যাপ্লিকেশন ব্লকিং | অ্যাপ্লিকেশনকে ব্লক করে, অন্য কোনো উইন্ডোতে কাজ করা যায় না। | অ্যাপ্লিকেশন ব্লক হয় না, মূল উইন্ডোতে কাজ করা যায়। |
| ব্যবহার | গুরুত্বপূর্ণ তথ্য বা ফাংশন ইনপুটের জন্য ব্যবহৃত হয়। | একাধিক কাজের জন্য বা সাইডবার হিসেবে ব্যবহৃত হয়। |
| ইন্টারঅ্যাকশন | ব্যবহারকারীকে ডায়ালগটি বন্ধ না করা পর্যন্ত অ্যাপ্লিকেশন বন্ধ করতে দেয় না। | ডায়ালগ বন্ধ না করেও ব্যবহারকারী মূল উইন্ডোতে কাজ করতে পারে। |
সারাংশ
Modal Dialog এবং Modeless Dialog এর মধ্যে প্রধান পার্থক্য হল, Modal Dialog ব্যবহারকারীকে মূল অ্যাপ্লিকেশন থেকে আলাদা করে রাখে এবং Modeless Dialog ব্যবহারকারীকে মূল অ্যাপ্লিকেশন উইন্ডোতে ফিরে গিয়ে কাজ করার সুযোগ দেয়। Modal Dialog সাধারণত গুরুত্বপূর্ণ সিদ্ধান্ত নেওয়ার জন্য ব্যবহৃত হয়, যেমন একটি কনফার্মেশন বা ইনপুট, এবং Modeless Dialog সাধারণত একাধিক কাজের জন্য ব্যবহৃত হয়, যেখানে ব্যবহারকারীকে ডায়ালগ বন্ধ না করেও অন্য কাজ করা যায়।
MFC (Microsoft Foundation Classes) এর মধ্যে Data Exchange (DDX) এবং Data Validation (DDV) হল দুটি গুরুত্বপূর্ণ মেকানিজম, যা ডায়ালগ বক্সের মধ্যে ব্যবহারকারীর ইনপুট ডাটা গ্রহণ এবং যাচাই করতে ব্যবহৃত হয়। এই দুটি ফিচার MFC অ্যাপ্লিকেশন ডেভেলপমেন্টে ডায়ালগ বক্সে ডাটা ম্যানিপুলেশনকে সহজ ও নিরাপদ করে তোলে।
Data Exchange (DDX)
Data Exchange (DDX) হল এমন একটি প্রক্রিয়া যা ব্যবহারকারীর ইনপুট ডাটা এবং অ্যাপ্লিকেশনের ডেটা স্ট্রাকচারের মধ্যে ডাটা আদান-প্রদান করে। এর মাধ্যমে MFC অ্যাপ্লিকেশন ডায়ালগ বক্সের মধ্যে ইনপুট নেয় এবং সেগুলিকে সংশ্লিষ্ট ভেরিয়েবল বা ডাটা মেম্বারগুলিতে পাঠায়।
DDX এর কাজ হল ডায়ালগ বক্সের কন্ট্রোলস (যেমন Edit Box, Combo Box, Check Box ইত্যাদি) এবং C++ ভেরিয়েবলগুলির মধ্যে ডাটা অ্যাসাইন করা। যখন ব্যবহারকারী ডায়ালগ বক্সের কন্ট্রোলসের মান পরিবর্তন করে, DDX সেই মানটিকে সংশ্লিষ্ট ভেরিয়েবলে পাঠায় এবং যখন ডায়ালগ বক্সটি চালু হয়, তখন DDX ভেরিয়েবলগুলির মান কন্ট্রোলসে প্রদর্শন করে।
Code Example:
// Example of DDX for an Edit Box and a CString variable
CEdit m_editBox;
CString m_strData;
// Data Exchange in DoDataExchange function
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_BOX, m_strData); // Map data between edit box and CString variable
}
এখানে DDX_Text ফাংশনটি ব্যবহার করা হয়েছে, যা m_strData (CString ভেরিয়েবল) এবং IDC_EDIT_BOX (এডিট বক্স কন্ট্রোল) এর মধ্যে ডাটা এক্সচেঞ্জ করবে।
Data Validation (DDV)
Data Validation (DDV) হল একটি প্রক্রিয়া যা ব্যবহারকারীর ইনপুট ডেটাকে যাচাই করতে ব্যবহৃত হয়। ডায়ালগ বক্সের কন্ট্রোলসে ডেটা এন্টার করার সময়, এটি নিশ্চিত করে যে ইনপুট ডেটা সঠিক এবং প্রত্যাশিত ফরম্যাটে আছে। MFC তে, DDV ফাংশনগুলো ব্যবহার করে ইনপুটের সঠিকতা পরীক্ষা করা হয়, যেমন, সঠিক ফরম্যাটে টেক্সট, সংখ্যা, ইমেল ঠিকানা বা তারিখ।
DDV প্রক্রিয়া DoDataExchange ফাংশনের মাধ্যমে কার্যকর করা হয় এবং এই ফাংশন ব্যবহারকারীর ইনপুটের সাথে সংশ্লিষ্ট কিছু যাচাইয়ের শর্ত বা ফাংশন প্রয়োগ করতে সাহায্য করে।
MFC তে বিভিন্ন DDV ফাংশন উপলব্ধ, যেমন:
DDV_MinMaxInt(): একটি পূর্ণসংখ্যার ইনপুট যাচাই করে যে এটি একটি নির্দিষ্ট সীমার মধ্যে আছে কিনা।DDV_MaxChars(): একটি স্ট্রিং ইনপুট যাচাই করে যে এটি নির্দিষ্ট সংখ্যক ক্যারেক্টারের মধ্যে রয়েছে কিনা।DDV_Required(): যাচাই করে যে কোনো ইনপুট দেওয়া হয়েছে কিনা, যেমন একটি ফিল্ড খালি রাখা যাবে না।
Code Example:
// Example of DDV for validating an integer input within a range
void CMyDialog::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_AGE, m_nAge);
DDV_MinMaxInt(pDX, m_nAge, 18, 120); // Validate that the age is between 18 and 120
}
এখানে DDV_MinMaxInt ফাংশনটি নিশ্চিত করবে যে m_nAge (integer ভেরিয়েবল) ১৮ থেকে ১২০ এর মধ্যে থাকে।
Data Exchange এবং Data Validation এর মধ্যে পার্থক্য
- Data Exchange (DDX): এটি মূলত ডাটা ট্রান্সফারের প্রক্রিয়া, যেখানে কন্ট্রোল থেকে ভেরিয়েবলে বা ভেরিয়েবল থেকে কন্ট্রোলে ডাটা প্রেরণ করা হয়।
- Data Validation (DDV): এটি ইনপুট ডেটার সঠিকতা যাচাই করার প্রক্রিয়া, যা নিশ্চিত করে যে ব্যবহারকারী যে ডাটা প্রদান করেছে তা সঠিক এবং প্রত্যাশিত ফরম্যাটে আছে।
সারাংশ
MFC তে Data Exchange (DDX) এবং Data Validation (DDV) দুটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ডায়ালগ বক্সে ডেটার নিরাপদ এবং সঠিক আদান-প্রদান নিশ্চিত করে। DDX ব্যবহারকারীর ইনপুটকে সংশ্লিষ্ট ভেরিয়েবলে পাঠানোর কাজ করে, আর DDV সেই ইনপুটের সঠিকতা যাচাই করে। এই দুটি ফিচার MFC অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহারকারী ইন্টারফেসকে আরও কার্যকর এবং নির্ভরযোগ্য করে তোলে।
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