MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনগুলিতে Menu এবং Toolbar ব্যবহারকারীদের ইন্টারঅ্যাকশন সুবিধা দেয়, যা সাধারণত বিভিন্ন অ্যাকশন বা ফাংশন সম্পাদন করতে সহায়তা করে। Menu এবং Toolbar এর মাধ্যমে অ্যাপ্লিকেশন ব্যবহারকারীকে বিভিন্ন অপশন বা টুলস প্রদান করে, এবং তাদের ইভেন্ট হ্যান্ডলিং অ্যাপ্লিকেশনের কার্যকারিতা পরিচালনা করে। এখানে Menu এবং Toolbar এর ইভেন্ট হ্যান্ডলিংয়ের প্রক্রিয়া আলোচনা করা হলো।
মেনু (Menu) ইভেন্ট হ্যান্ডলিং
MFC এ Menu এর মাধ্যমে বিভিন্ন অপশন বা কমান্ড প্রদান করা হয়। মেনুতে সাধারণত ফাইল অপশন, এডিট অপশন, ভিউ অপশন ইত্যাদি থাকে। মেনুর আইটেমগুলি ক্লিক করা হলে নির্দিষ্ট Command ইভেন্ট ট্রিগার হয়, যা পরে কোডে নির্দিষ্ট ফাংশন বা অ্যাকশন চালু করে।
1. Menu Command Handling
MFC তে, মেনু কমান্ডগুলোর হ্যান্ডলিং সাধারণত ON_COMMAND ম্যাক্রো ব্যবহার করে করা হয়। যখন ব্যবহারকারী মেনু থেকে একটি আইটেম নির্বাচন করেন, তখন একটি কমান্ড আইডি (যেমন ID_FILE_OPEN, ID_FILE_SAVE ইত্যাদি) পাঠানো হয়।
Code Example:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CMainFrame::OnFileOpen)
ON_COMMAND(ID_FILE_EXIT, &CMainFrame::OnFileExit)
END_MESSAGE_MAP()
void CMainFrame::OnFileNew()
{
AfxMessageBox(_T("New File Command Triggered"));
}
void CMainFrame::OnFileOpen()
{
AfxMessageBox(_T("Open File Command Triggered"));
}
void CMainFrame::OnFileExit()
{
PostMessage(WM_CLOSE); // ক্লোজ করার জন্য
}
এখানে, ON_COMMAND ম্যাক্রো ব্যবহার করে File মেনুর বিভিন্ন কমান্ডের জন্য হ্যান্ডলারের ফাংশন তৈরি করা হয়েছে। ব্যবহারকারী যখন মেনু থেকে New, Open, বা Exit কমান্ড নির্বাচন করবেন, তখন সংশ্লিষ্ট ফাংশনটি কার্যকর হবে।
2. Menu Items ডিজাইন করা
মেনু আইটেমগুলি সাধারণত Resource ফাইলে ডিজাইন করা হয়, যেখানে মেনু আইটেমের নাম, আইডি এবং অন্যান্য বৈশিষ্ট্য সংজ্ঞায়িত করা থাকে।
Code Example (Resource File):
IDR_MAINFRAME MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&New", ID_FILE_NEW
MENUITEM "&Open", ID_FILE_OPEN
MENUITEM "&Exit", ID_FILE_EXIT
END
END
এখানে, File মেনুতে New, Open, এবং Exit আইটেমগুলো রয়েছে, এবং প্রতিটি আইটেমের সাথে একটি আইডি (ID_FILE_NEW, ID_FILE_OPEN, ID_FILE_EXIT) যুক্ত রয়েছে, যা পরে ইভেন্ট হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়।
টুলবার (Toolbar) ইভেন্ট হ্যান্ডলিং
Toolbar ব্যবহারকারীকে বিভিন্ন কমান্ড বা ফাংশন দ্রুত এক্সেস করতে সহায়তা করে। একটি টুলবারে সাধারণত আইকন থাকে যা এক বা একাধিক কমান্ডকে ট্রিগার করে। Toolbar এর ইভেন্ট হ্যান্ডলিংও মেনু ইভেন্ট হ্যান্ডলিংয়ের মতোই কাজ করে, তবে এখানে সাধারণত ON_UPDATE_COMMAND_UI এবং ON_COMMAND ম্যাক্রো ব্যবহার করা হয়।
1. Toolbar Command Handling
Toolbar এর কমান্ডগুলোর হ্যান্ডলিং ON_COMMAND ম্যাক্রো দিয়ে করা হয়। ব্যবহারকারী যখন টুলবারের কোনো আইকনে ক্লিক করেন, তখন সংশ্লিষ্ট কমান্ড ইভেন্ট ট্রিগার হয়।
Code Example:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_COMMAND(ID_TOOL_NEW, &CMainFrame::OnToolNew)
ON_COMMAND(ID_TOOL_OPEN, &CMainFrame::OnToolOpen)
ON_COMMAND(ID_TOOL_SAVE, &CMainFrame::OnToolSave)
END_MESSAGE_MAP()
void CMainFrame::OnToolNew()
{
AfxMessageBox(_T("New Tool Command Triggered"));
}
void CMainFrame::OnToolOpen()
{
AfxMessageBox(_T("Open Tool Command Triggered"));
}
void CMainFrame::OnToolSave()
{
AfxMessageBox(_T("Save Tool Command Triggered"));
}
এখানে, ON_COMMAND ম্যাক্রো ব্যবহার করে Toolbar এর বিভিন্ন কমান্ডের জন্য হ্যান্ডলার তৈরি করা হয়েছে। ব্যবহারকারী যখন টুলবার থেকে New, Open, বা Save আইকনে ক্লিক করবেন, তখন সংশ্লিষ্ট ফাংশন কার্যকর হবে।
2. Toolbar Items ডিজাইন করা
টুলবার আইটেমগুলি সাধারণত Resource ফাইলের মধ্যে ডিজাইন করা হয়। এছাড়া, টুলবার আইকনগুলোর জন্য ইমেজও ব্যবহৃত হয়।
Code Example (Resource File):
IDR_TOOLBAR TOOLBAR
BEGIN
BUTTON ID_TOOL_NEW
BUTTON ID_TOOL_OPEN
BUTTON ID_TOOL_SAVE
END
এখানে, Toolbar এর মধ্যে তিনটি বাটন New, Open, এবং Save এর জন্য আইকন যুক্ত করা হয়েছে। এই আইকনগুলোর সাথে সংশ্লিষ্ট কমান্ড আইডি রয়েছে, যা পরে ইভেন্ট হ্যান্ডলিংয়ে ব্যবহৃত হয়।
মেনু এবং টুলবারের আইটেমের আপডেট
মেনু এবং টুলবারের আইটেমগুলি ব্যবহারকারীর ইন্টারঅ্যাকশনের উপর ভিত্তি করে আপডেট করা হতে পারে, যেমন কোনো কন্ডিশন পূর্ণ হলে একটি নির্দিষ্ট বাটন বা মেনু আইটেম নিষ্ক্রিয় বা সক্রিয় করা।
1. ON_UPDATE_COMMAND_UI ব্যবহার করা
ON_UPDATE_COMMAND_UI ম্যাক্রো ব্যবহার করে মেনু এবং টুলবারের আইটেমের অবস্থার উপর ভিত্তি করে তাদের সক্রিয় বা নিষ্ক্রিয় করা হয়।
Code Example:
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
ON_UPDATE_COMMAND_UI(ID_FILE_NEW, &CMainFrame::OnUpdateFileNew)
ON_UPDATE_COMMAND_UI(ID_TOOL_SAVE, &CMainFrame::OnUpdateToolSave)
END_MESSAGE_MAP()
void CMainFrame::OnUpdateFileNew(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TRUE); // মেনু আইটেম সক্রিয় করা
}
void CMainFrame::OnUpdateToolSave(CCmdUI* pCmdUI)
{
pCmdUI->Enable(FALSE); // টুলবার আইটেম নিষ্ক্রিয় করা
}
এখানে, OnUpdateFileNew ফাংশনে মেনু আইটেমকে সক্রিয় করা হয়েছে এবং OnUpdateToolSave ফাংশনে টুলবার আইটেমকে নিষ্ক্রিয় করা হয়েছে।
সারাংশ
Menu এবং Toolbar এর ইভেন্ট হ্যান্ডলিং MFC অ্যাপ্লিকেশনের একটি গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর কমান্ড বা ইনপুট অনুযায়ী অ্যাপ্লিকেশনের বিভিন্ন কার্যকলাপ পরিচালনা করে। ON_COMMAND ম্যাক্রো মেনু এবং টুলবারের কমান্ড হ্যান্ডলিংয়ের জন্য ব্যবহৃত হয়, আর ON_UPDATE_COMMAND_UI ম্যাক্রো ব্যবহার করে মেনু এবং টুলবারের আইটেমের অবস্থা পরিবর্তন করা যায়। MFC অ্যাপ্লিকেশনের ইউজার ইন্টারফেসে এই কন্ট্রোলসগুলো যোগ করে অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ ও ব্যবহারযোগ্য করা হয়।
Read more