Main Menu এবং Context Menu তৈরি

Menu, Toolbar, এবং Status Bar তৈরি (Creating Menus, Toolbars, and Status Bars) - এমএফসি (MFC) - Microsoft Technologies

479

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 দিয়ে প্রক্রিয়া করা হয়, যা অ্যাপ্লিকেশনের বিভিন্ন অংশে মেনু পরিচালনা করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...