MFC (Microsoft Foundation Classes) এ Menus, Toolbars, এবং Status Bars হল জনপ্রিয় UI কন্ট্রোলস, যেগুলি অ্যাপ্লিকেশনের ইন্টারফেসকে আরও ব্যবহারকারী-বান্ধব ও কার্যকরী করে তোলে। এই কন্ট্রোলস গুলি ব্যবহারকারীর ইন্টারঅ্যাকশন এবং কাজের প্রক্রিয়াকে সহজ করে তোলে। নিচে MFC এ এই কন্ট্রোলস গুলি তৈরি করার পদ্ধতি এবং তাদের ব্যবহার আলোচনা করা হলো।
মেনু (Menu)
Menus অ্যাপ্লিকেশনের অন্যতম গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীর জন্য একাধিক অপশন বা ফিচারের অ্যাক্সেস প্রদান করে। MFC তে মেনু তৈরি করতে, আপনি ডায়ালগ বক্সে অথবা উইন্ডোতে মেনু আইটেমগুলোকে অ্যাড করতে পারেন। সাধারণত মেনু বার উইন্ডোর উপরের দিকে থাকে, এবং সেখানে বিভিন্ন মেনু অপশন থাকে, যেমন File, Edit, View ইত্যাদি।
- Code Example:
// উইন্ডোতে মেনু সেট করা
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME); // মেনু রিসোর্স লোড করা
SetMenu(&menu); // মেনু অ্যাপ্লিকেশনে অ্যাসাইন করা
এই কোডটি একটি Main Menu লোড করবে এবং উইন্ডোতে সেট করবে। মেনু আইটেমগুলো রিসোর্স ফাইলে IDR_MAINFRAME আইডি দিয়ে ডিফাইন করা থাকে।
- মেনু আইটেমের হ্যান্ডলিং: মেনু আইটেম ক্লিক করার পর, তার জন্য একটি কমান্ড প্রক্রিয়া তৈরি করতে হয়। যেমন:
ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew)
এই কোডটি File > New মেনু আইটেমে ক্লিক করলে OnFileNew ফাংশন কল করবে।
টুলবার (Toolbar)
Toolbar হল একটি গ্রাফিক্যাল কন্ট্রোল, যেখানে ব্যবহারকারী সাধারণত বিভিন্ন কমান্ড বা ফিচারের জন্য আইকন ব্যবহার করে। টুলবার সাধারনত মেনু অপশনগুলির শর্টকাট হিসেবে কাজ করে। এটি ব্যবহারের মাধ্যমে ব্যবহারকারী দ্রুত কমান্ড এক্সিকিউট করতে পারেন, যেমন ফাইল ওপেন করা, প্রিন্ট করা, বা সেভ করা।
- Code Example:
CToolBar m_wndToolBar;
m_wndToolBar.Create(this);
m_wndToolBar.LoadToolBar(IDR_MAINFRAME); // টুলবার রিসোর্স লোড করা
m_wndToolBar.EnableDocking(CBRS_ALIGN_TOP); // টুলবারে ডকিং সক্ষম করা
EnableDocking(CBRS_ALIGN_TOP); // উইন্ডোতে ডকিং সক্ষম করা
এই কোডটি একটি Toolbar তৈরি করবে, এবং IDR_MAINFRAME রিসোর্স থেকে টুলবার লোড করবে। টুলবারের আইকনগুলো সাধারণত ইমেজ রিসোর্সের মাধ্যমে লোড করা হয়।
- টুলবারের কমান্ড হ্যান্ডলিং: প্রতিটি টুলবার আইকন ক্লিক করার জন্যও কমান্ড হ্যান্ডলার ব্যবহার করা হয়, যেমন:
ON_COMMAND(ID_FILE_NEW, &CMainFrame::OnFileNew)
স্ট্যাটাস বার (Status Bar)
Status Bar হল একটি তথ্য প্রদর্শনকারী কন্ট্রোল, যা অ্যাপ্লিকেশনের নিচের দিকে থাকে এবং ব্যবহারকারীর কাজের অবস্থা, যেমন প্রক্রিয়ার অগ্রগতি, সার্চ ফলাফল বা বর্তমান সেশন তথ্য দেখায়। এটি একটি লাইন আকারে হয় এবং সাধারণত কমান্ড লাইন ইনপুট বা তথ্য প্রদর্শন করার জন্য ব্যবহৃত হয়।
- Code Example:
CStatusBar m_wndStatusBar;
m_wndStatusBar.Create(this);
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); // স্ট্যাটাস বারের আইটেম সেট করা
এটি একটি Status Bar তৈরি করবে এবং স্ট্যাটাস বারে নির্দিষ্ট Indicators যোগ করবে।
- স্ট্যাটাস বারের টেক্সট আপডেট:
m_wndStatusBar.SetPaneText(0, _T("Ready")); // প্রথম প্যানেলে "Ready" টেক্সট প্রদর্শন করা
এই কোডটি স্ট্যাটাস বারের প্রথম প্যানেলে "Ready" টেক্সট সেট করবে।
সারাংশ
MFC তে Menu, Toolbar, এবং Status Bar তৈরি করা খুবই সহজ এবং তারা অ্যাপ্লিকেশনের ইউজার ইন্টারফেসে কার্যকারিতা যোগ করে। Menu ব্যবহারকারীর জন্য বিভিন্ন অপশন সরবরাহ করে, Toolbar শর্টকাট হিসেবে বিভিন্ন কমান্ড প্রদান করে, এবং Status Bar ব্যবহারকারীকে অবস্থা বা প্রক্রিয়া সম্পর্কে তথ্য দেখায়। এই কন্ট্রোলস গুলি ব্যবহার করে অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ ও ইউজার-বান্ধব করা যায়। MFC তে এই কন্ট্রোলসের সাহায্যে অ্যাপ্লিকেশনের কার্যকারিতা এবং ইন্টারফেস উন্নত করা সম্ভব।
MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশনে, Main Menu এবং Context Menu হল দুটি গুরুত্বপূর্ণ ইন্টারফেস কন্ট্রোল, যা ব্যবহারকারীদের অ্যাপ্লিকেশনটি ব্যবহার করতে আরও সহজ করে তোলে। Main Menu অ্যাপ্লিকেশনের মূল মেনু বার হিসেবে কাজ করে, যেখানে বিভিন্ন অপশন বা কমান্ড থাকে, এবং Context Menu সাধারণত ডান ক্লিকের মাধ্যমে প্রদর্শিত হয়, যা নির্দিষ্ট কন্ট্রোল বা উইন্ডোর সাথে সম্পর্কিত বিভিন্ন অপশন প্রদর্শন করে।
মেনু তৈরি করা (Main Menu Creation)
MFC তে, Main Menu তৈরি করার জন্য আপনাকে মেনু রিসোর্স ব্যবহার করতে হবে এবং এটি উইন্ডো ক্লাসের সাথে যুক্ত করতে হবে। Main Menu সাধারণত উইন্ডোর উপরের দিকে থাকে এবং এতে বিভিন্ন কমান্ড বা অপশন থাকে, যেমন ফাইল অপেন, সেভ, প্রিন্ট ইত্যাদি।
Main Menu তৈরির জন্য প্রথমে Menu Resource তৈরি করতে হয় এবং তারপর সেগুলি অ্যাপ্লিকেশনের উইন্ডোতে যুক্ত করতে হয়।
Step 1: মেনু রিসোর্স তৈরি করা
Visual Studio তে, Main Menu রিসোর্স তৈরি করতে, আপনাকে Resource View তে গিয়ে Menu আইটেমটি নির্বাচন করতে হবে। তারপর নতুন একটি মেনু তৈরি করতে হবে এবং এতে প্রয়োজনীয় মেনু আইটেম যোগ করতে হবে।
Step 2: মেনু কোডে যুক্ত করা
মেনু রিসোর্স তৈরি করার পর, আপনাকে মেনু কোডে যুক্ত করতে হবে। এটি OnCommand ম্যাক্রো দিয়ে করা হয়, যা ব্যবহারকারীর মেনু নির্বাচন করার সময় সঠিক ফাংশন বা কমান্ড কল করে।
Code Example:
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
ON_COMMAND(ID_FILE_NEW, &CMyFrameWnd::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, &CMyFrameWnd::OnFileOpen)
ON_COMMAND(ID_FILE_EXIT, &CMyFrameWnd::OnFileExit)
END_MESSAGE_MAP()
void CMyFrameWnd::OnFileNew()
{
AfxMessageBox(_T("File New Selected"));
}
void CMyFrameWnd::OnFileOpen()
{
AfxMessageBox(_T("File Open Selected"));
}
void CMyFrameWnd::OnFileExit()
{
PostMessage(WM_CLOSE);
}
এখানে, ID_FILE_NEW, ID_FILE_OPEN, এবং ID_FILE_EXIT হল মেনু আইটেম এবং যখন ব্যবহারকারী সেগুলি সিলেক্ট করবে, সংশ্লিষ্ট ফাংশনগুলো কল হবে।
কনটেক্সট মেনু তৈরি করা (Context Menu Creation)
Context Menu একটি রাইট-ক্লিক মেনু, যা সাধারণত উইন্ডো বা কন্ট্রোলের সাথে সম্পর্কিত বিশেষ অপশন প্রদর্শন করে। উদাহরণস্বরূপ, যখন ব্যবহারকারী একটি ফাইল তালিকা থেকে ফাইলের উপর রাইট-ক্লিক করেন, তখন একটি কনটেক্সট মেনু প্রদর্শিত হয় যা সেই ফাইলের জন্য উপলব্ধ অপশন দেখায়।
MFC তে কনটেক্সট মেনু তৈরি করার জন্য WM_CONTEXTMENU মেসেজ ব্যবহার করা হয়, যা একটি উইন্ডোর উপর রাইট-ক্লিক করলে ট্রিগার হয়।
Step 1: মেনু রিসোর্স তৈরি করা
প্রথমে Context Menu এর জন্য একটি মেনু রিসোর্স তৈরি করতে হবে, যেমন Main Menu তৈরি করার সময় করা হয়েছিল।
Step 2: কনটেক্সট মেনু হ্যান্ডলিং
কনটেক্সট মেনু হ্যান্ডল করার জন্য, আপনাকে WM_CONTEXTMENU মেসেজ প্রক্রিয়া করতে হবে। মেসেজটি আপনার উইন্ডোতে রাইট-ক্লিক করলে ট্রিগার হবে, এবং আপনি এতে প্রয়োজনীয় কনটেক্সট মেনু প্রদর্শন করতে পারবেন।
Code Example:
BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
ON_WM_CONTEXTMENU()
END_MESSAGE_MAP()
void CMyFrameWnd::OnContextMenu(CWnd* pWnd, CPoint point)
{
CMenu menu;
menu.LoadMenu(IDR_CONTEXT_MENU); // Load context menu from resource
CMenu* pContextMenu = menu.GetSubMenu(0);
ASSERT(pContextMenu != NULL);
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y, this);
}
এখানে, IDR_CONTEXT_MENU হল কনটেক্সট মেনু রিসোর্স এবং TrackPopupMenu ফাংশনটি কনটেক্সট মেনু প্রদর্শন করার জন্য ব্যবহার করা হয়।
কনটেক্সট মেনু রিসোর্স তৈরি করা
Context Menu রিসোর্স তৈরি করার জন্য আপনাকে Resource View তে গিয়ে Menu আইটেমটি নির্বাচন করতে হবে এবং একটি নতুন মেনু তৈরি করতে হবে। এখানে বিভিন্ন কনটেক্সট অপশন যেমন Copy, Paste, Delete ইত্যাদি যোগ করা যেতে পারে।
সারাংশ
Main Menu এবং Context Menu হল MFC অ্যাপ্লিকেশনগুলোর গুরুত্বপূর্ণ অংশ, যা ব্যবহারকারীদের একটি ইন্টারেক্টিভ ও ব্যবহারবান্ধব অভিজ্ঞতা প্রদান করে। Main Menu উইন্ডোর উপরের অংশে থাকে এবং বিভিন্ন কমান্ড বা অপশন প্রদর্শন করে, যেখানে Context Menu একটি রাইট-ক্লিক মেনু, যা নির্দিষ্ট উইন্ডো বা কন্ট্রোলের সাথে সম্পর্কিত অপশন দেখায়। এই কন্ট্রোলগুলি Menu Resources ব্যবহার করে তৈরি করা হয় এবং Message Handlers দিয়ে প্রক্রিয়া করা হয়, যা অ্যাপ্লিকেশনের বিভিন্ন অংশে মেনু পরিচালনা করতে সাহায্য করে।
MFC (Microsoft Foundation Classes) তে Toolbar একটি গুরুত্বপূর্ণ ইউজার ইন্টারফেস কন্ট্রোল যা টুলস, অপশন বা ফাংশন দ্রুত অ্যাক্সেসের জন্য ব্যবহার করা হয়। এটি সাধারণত অ্যাপ্লিকেশনের প্রধান উইন্ডোর উপরের অংশে থাকে এবং বিভিন্ন ধরণের আইকন বা বাটন ধারণ করে যা ব্যবহারকারীর কাজ সহজ করে। Toolbar ব্যবহারকারীকে ফাংশন বা কমান্ডগুলি দ্রুত প্রয়োগ করার সুযোগ দেয়, যেমন ফাইল খুলতে, সেভ করতে, প্রিন্ট করতে ইত্যাদি।
Toolbar কী এবং কেন ব্যবহার করা হয়?
Toolbar হল একটি কাস্টমাইজযোগ্য কন্ট্রোল যেখানে বিভিন্ন বাটন, আইকন, টেক্সট বা অন্যান্য কন্ট্রোলস থাকে, যা ব্যবহারকারীকে কিছু কার্যকলাপ বা অপশন দ্রুত অ্যাক্সেস করতে সহায়তা করে। এটি অ্যাপ্লিকেশনের ইউজার ইন্টারফেসকে আরও ইন্টারঅ্যাকটিভ এবং ব্যবহারকারী বান্ধব করে তোলে। Toolbar কাস্টমাইজ করা যায় এবং এতে বিভিন্ন ধরনের ফাংশন যোগ করা যায় যা অ্যাপ্লিকেশনটির কার্যকারিতা বাড়ায়।
Toolbar তৈরি করার ধাপসমূহ
MFC তে Toolbar তৈরি করার জন্য সাধারণত CToolBar ক্লাস ব্যবহার করা হয়। আপনি এটি ডায়ালগ, উইন্ডো বা অ্যাপ্লিকেশনের মূল অংশ হিসেবে যুক্ত করতে পারেন।
1. Toolbar ক্লাস তৈরি করা
প্রথমে, Toolbar যুক্ত করার জন্য আপনাকে CMainFrame বা আপনার মূল উইন্ডো ক্লাসে CToolBar ক্লাসের ইনস্ট্যান্স তৈরি করতে হবে। উদাহরণস্বরূপ:
Code Example:
class CMainFrame : public CFrameWnd
{
public:
CToolBar m_wndToolBar;
// অন্যান্য কোড...
};
2. Toolbar তৈরি এবং কাস্টমাইজ করা
OnCreate() বা OnInitialUpdate() ফাংশনে Toolbar তৈরি করা হয় এবং প্রয়োজনীয় বাটন বা আইকন যুক্ত করা হয়। এটি করার জন্য, Create এবং LoadToolBar ফাংশনগুলি ব্যবহার করা হয়।
Code Example:
BOOL CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (!CFrameWnd::OnCreate(lpCreateStruct))
return -1;
if (!m_wndToolBar.Create(this) || !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1;
}
// Toolbar কাস্টমাইজেশন
m_wndToolBar.SetButtons(buttons, sizeof(buttons)/sizeof(UINT)); // Buttons এর আইডি
return 0;
}
এখানে, IDR_MAINFRAME একটি রিসোর্স আইডি যা Toolbar এর ডিফল্ট বাটনগুলি লোড করে। SetButtons ফাংশন ব্যবহার করে আপনি বাটনগুলির তালিকা কাস্টমাইজ করতে পারেন।
3. Toolbar বাটন সংযুক্ত করা
Toolbar তে বিভিন্ন বাটন বা আইকন যোগ করার জন্য, আপনাকে CToolBar এর সাথে সম্পর্কিত রিসোর্স ব্যবহার করতে হবে। আপনি LoadBitmap এবং SetBitmap ফাংশন ব্যবহার করে বাটনের জন্য আইকন বা গ্রাফিক্স যুক্ত করতে পারেন।
Code Example:
m_wndToolBar.LoadBitmap(IDB_TOOLBAR); // একটি বিটম্যাপ লোড করুন
m_wndToolBar.SetBitmap(IDB_TOOLBAR);
এখানে IDB_TOOLBAR একটি বিটম্যাপ রিসোর্স আইডি যা Toolbar এর আইকনগুলির জন্য ব্যবহৃত হবে।
Toolbar কাস্টমাইজেশন
MFC তে Toolbar কাস্টমাইজেশন বেশ সহজ এবং এটি বিভিন্নভাবে কাস্টমাইজ করা যায়, যেমন বাটন, টেক্সট, আইকন পরিবর্তন করা, বা নতুন ফিচার যোগ করা।
1. Toolbar বাটনের কাস্টমাইজেশন
Toolbar বাটনগুলির জন্য আপনি UpdateUI বা OnCommand ইভেন্ট হ্যান্ডলার ব্যবহার করতে পারেন। এগুলির মাধ্যমে আপনি বিভিন্ন বাটন বা ফাংশন কাস্টমাইজ করতে পারেন।
Code Example:
void CMainFrame::OnUpdateMyButton(CCmdUI* pCmdUI)
{
pCmdUI->Enable(TRUE); // বাটনটি সক্রিয় করা
pCmdUI->SetText(_T("My Custom Button")); // বাটনের টেক্সট পরিবর্তন করা
}
2. Toolbar এর আকার এবং অবস্থান কাস্টমাইজ করা
MFC তে Toolbar এর আকার এবং অবস্থান কাস্টমাইজ করা যায়। আপনি এটি Docking বা Floating অবস্থায় রাখতে পারেন।
Code Example:
m_wndToolBar.EnableDocking(CBRS_ALIGN_TOP);
DockControlBar(&m_wndToolBar); // Toolbar কে উপরের দিকে ডক করুন
3. কাস্টম বাটন আইকন তৈরি
Toolbar তে আপনি কাস্টম আইকন ব্যবহার করতে পারেন। এক্ষেত্রে, CBitmap বা CImageList ব্যবহার করে আপনি সেগুলি লোড এবং ডিসপ্লে করতে পারবেন।
Code Example:
CImageList m_imageList;
m_imageList.Create(16, 16, ILC_COLOR24, 0, 1); // আইকনের আকার এবং কালার স্কিম
CBitmap bmp;
bmp.LoadBitmap(IDB_TOOLBAR_ICONS); // কাস্টম বিটম্যাপ লোড
m_imageList.Add(&bmp, RGB(255, 255, 255)); // আইকন যোগ
m_wndToolBar.SetImageList(&m_imageList); // Toolbar তে আইকন সেট
Toolbar-এ ইভেন্ট হ্যান্ডলার যুক্ত করা
Toolbar এর বাটনগুলিতে ক্লিক করলে নির্দিষ্ট কার্যকলাপ ট্রিগার হয়। MFC এ আপনি OnCommand বা OnUpdate ইভেন্ট ব্যবহার করে এই ফাংশনগুলো সংজ্ঞায়িত করতে পারেন।
Code Example:
void CMainFrame::OnFileNew()
{
// নতুন ফাইল তৈরি করার জন্য কোড
}
void CMainFrame::OnFileOpen()
{
// ফাইল খোলার জন্য কোড
}
এখানে, OnFileNew এবং OnFileOpen ফাংশনগুলি Toolbar বাটনে ক্লিক করার পরে কার্যকর হবে।
সারাংশ
MFC তে Toolbar তৈরি এবং কাস্টমাইজ করা সহজ এবং খুবই শক্তিশালী একটি পদ্ধতি যা ব্যবহারকারীর জন্য অ্যাপ্লিকেশনটি আরো ইন্টারঅ্যাকটিভ এবং সহজবোধ্য করে তোলে। CToolBar ক্লাস ব্যবহার করে আপনি Toolbar তৈরি করতে পারেন এবং বিভিন্ন ধরনের কাস্টম বাটন, আইকন, বা অন্যান্য কন্ট্রোলস যোগ করতে পারেন। এর মাধ্যমে আপনি অ্যাপ্লিকেশনের কার্যকারিতা বৃদ্ধি করতে পারেন এবং ব্যবহারকারীকে দ্রুত বিভিন্ন ফাংশন অ্যাক্সেসের সুযোগ দিতে পারেন।
MFC (Microsoft Foundation Classes) অ্যাপ্লিকেশন তৈরি করার সময় Status Bar এবং Progress Bar দুটি গুরুত্বপূর্ণ কন্ট্রোল, যেগুলি ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করে। Status Bar সাধারণত অ্যাপ্লিকেশনের অবস্থার তথ্য প্রদর্শন করে, আর Progress Bar সাধারণত কোন প্রক্রিয়া বা কাজের অগ্রগতি দেখানোর জন্য ব্যবহৃত হয়।
এখানে Status Bar এবং Progress Bar কন্ট্রোলের ব্যবহার এবং তাদের ইমপ্লিমেন্টেশন পদ্ধতি আলোচনা করা হয়েছে।
Status Bar ব্যবহার
Status Bar হল একটি কন্ট্রোল যা অ্যাপ্লিকেশনের বিভিন্ন স্থানে অবস্থা বা তথ্য প্রদর্শন করে। এটি সাধারণত অ্যাপ্লিকেশনের নিচের অংশে অবস্থান করে এবং বিভিন্ন স্থিতি বা কাজের সম্পর্কে ব্যবহারকারীকে জানাতে ব্যবহৃত হয়। যেমন, ফাইল সেভ করা, অপশন পরিবর্তন করা, অথবা সিস্টেমের অন্যান্য স্থিতি।
Status Bar তৈরি এবং ব্যবহার
- Status Bar ইনিশিয়ালাইজ করা: MFC অ্যাপ্লিকেশনে Status Bar সাধারণত CStatusBar ক্লাস ব্যবহার করে তৈরি করা হয়। প্রথমে, আপনাকে
OnCreateঅথবাOnInitialUpdateফাংশনে এটি ইনিশিয়ালাইজ করতে হবে। Status Bar তৈরি করার কোড:
CStatusBar m_wndStatusBar; m_wndStatusBar.Create(pMainWnd); m_wndStatusBar.SetIndicators(indicators, sizeof(indicators) / sizeof(UINT));এই কোডটি CStatusBar কন্ট্রোল তৈরি করবে এবং সেটির জন্য ইন্ডিকেটরস সেট করবে, যেমন কোনো ধরণের তথ্য প্রদর্শন করা (যেমন: ফাইল সেভ বা অপারেশন প্রগ্রেস)।
Status Bar এ টেক্সট সেট করা: স্ট্যাটাস বার এ টেক্সট পরিবর্তন করতে, আপনি SetPaneText মেথড ব্যবহার করতে পারেন:
m_wndStatusBar.SetPaneText(0, _T("Ready"));এখানে
0হল প্যানেল ইনডেক্স, এবং_T("Ready")হল স্ট্যাটাস বার এ প্রদর্শিত টেক্সট।Status Bar এর মাধ্যমে ব্যবহৃত ইন্ডিকেটরস: Status Bar এ বিভিন্ন indicators (যেমন: progress, caps lock, cursor position) প্রদর্শন করা যায়। এগুলি ইন্ডিকেটরস অ্যারেতে নির্ধারণ করা হয়:
static UINT indicators[] = { ID_SEPARATOR, // Separator ID_INDICATOR_CAPS, // Caps Lock ID_INDICATOR_NUM, // Num Lock ID_INDICATOR_SCRL, // Scroll Lock };
Progress Bar ব্যবহার
Progress Bar হল একটি কন্ট্রোল, যা কোন প্রক্রিয়ার অগ্রগতি প্রদর্শন করে। এটি সাধারণত বড় বা দীর্ঘস্থায়ী কাজের সময় ব্যবহার করা হয়, যেমন ডাউনলোড, ফাইল কপি, বা বড় প্রক্রিয়া সম্পন্ন হওয়ার সময়। Progress Bar ব্যবহারকারীকে জানায় যে কাজটি চলছে এবং কতটুকু সম্পন্ন হয়েছে।
Progress Bar তৈরি এবং ব্যবহার
- Progress Bar ইনিশিয়ালাইজ করা: MFC তে CProgressCtrl ক্লাস ব্যবহার করে Progress Bar তৈরি করা হয়। প্রথমে আপনাকে এটি Create মেথডের মাধ্যমে তৈরি করতে হবে।
Progress Bar তৈরি করার কোড:
CProgressCtrl m_wndProgress; m_wndProgress.Create(WS_CHILD | WS_VISIBLE | PBS_SMOOTH, CRect(10, 10, 200, 30), pParentWnd, IDC_PROGRESS); m_wndProgress.SetRange(0, 100); // 0 থেকে 100 পর্যন্ত রেঞ্জ m_wndProgress.SetPos(0); // প্রাথমিক অবস্থায় 0%Progress Bar এর অগ্রগতি আপডেট করা: Progress Bar এর অগ্রগতি আপডেট করতে, আপনি SetPos মেথড ব্যবহার করতে পারেন, যেখানে আপনি অগ্রগতির নতুন মান প্রদান করেন:
m_wndProgress.SetPos(progressValue); // progressValue 0 থেকে 100 এর মধ্যে হতে হবেProgress Bar এর স্টাইল সেট করা:
- PBS_SMOOTH: এটি একটি স্মুথ প্রগ্রেস বার তৈরি করে, যেখানে অগ্রগতি স্লাইডার হালকা ভাবে পরিবর্তিত হয়।
- PBS_VERTICAL: এটি একটি ভার্টিকাল প্রগ্রেস বার তৈরি করে, যেখানে অগ্রগতি উপরের থেকে নিচে প্রদর্শিত হয়।
Code Example:
m_wndProgress.SetStyle(PBS_SMOOTH);
Status Bar এবং Progress Bar এর মধ্যে পার্থক্য
- Status Bar সাধারণত স্থির তথ্য (যেমন: অবস্থান, বা অন্য কোন ধরণের স্থিতি) প্রদর্শন করে, যেখানে Progress Bar প্রক্রিয়ার অগ্রগতি দৃশ্যমান করে।
- Status Bar সাধারণত পুরো উইন্ডো বা অ্যাপ্লিকেশনের নিচে স্থাপন করা হয়, এবং Progress Bar নির্দিষ্ট কাজ বা অপারেশন সম্পন্ন হওয়ার সময় প্রদর্শিত হয়।
- Status Bar একাধিক প্যানেল দিয়ে তৈরি হতে পারে, কিন্তু Progress Bar একটিই থাকে এবং এটি গতি দেখানোর জন্য প্রক্রিয়া অনুসরণ করে।
সারাংশ
Status Bar এবং Progress Bar দুটি গুরুত্বপূর্ণ কন্ট্রোল যা MFC অ্যাপ্লিকেশনে ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে সাহায্য করে। Status Bar অ্যাপ্লিকেশনের বর্তমান অবস্থা, পরিস্থিতি বা তথ্য প্রদর্শন করে, আর Progress Bar ব্যবহারকারীকে একটি প্রক্রিয়ার অগ্রগতি সম্পর্কে তথ্য দেয়। MFC তে এই কন্ট্রোলসগুলি সহজে কাস্টমাইজ করা যায় এবং অ্যাপ্লিকেশনের UI তে প্রোফেশনাল ফিচার যুক্ত করতে সাহায্য করে।
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