MFC – Menu

Menu

Menu được sử dụng rất nhiều trong các ứng dụng. Menubar được đặt bên dưới phần tên ứng dụng. Menubar có thể bao gồm rất nhiều các menu nhỏ (submenu hoặc menu items). Ví dụ dưới đây sẽ hướng dẫn bạn tạo một menubar gồm các submenu.
Chúng ta sẽ sử dụng source code base tại bài viết Dialog-based để add thêm menu bar.

Tạo Menu Resource

– Chọn [View] -> [Other Windows] -> [View Resources] – Click chuột phải vào folder [MFCApp.rc], chọn [Add Resource…] – Resource type: Menu
– Click [New]

Màn hình để bạn design menu xuất hiện, bạn chỉ cần đánh tên các item mong muốn của menu vào ô [Type Here].
ID của menu là IDR_MENU1

Tôi sẽ tạo 1 menu gồm có item [File] và các sub-item là [New], [Open], [Save] và [Exit]. Và giữa [Save] và [Exit] có separator line.

Mỗi sub-item [New], [Open], [Save] và [Exit] có 1 ID (định danh) riêng. Dựa vào ID này, application biết được sự kiện (select sub-item) đang xảy ra trên sub-item nào, để đưa ra các phương thức xử lí sự kiện tương ứng.
Visual Studio tự đồng đặt tên ID và giá trị của ID cho mỗi sub-item. Đôi khi, tên ID là không có ý nghĩa, chúng ta cần rename ID. Để rename của ID, chúng ta làm như sau

– Chuột phải vào sub-item cần rename ID, chọn [Edit IDs]

– Edit ID của các sub-item như sau

Sub-item ID name
New IDM_FILE_NEW
Open IDM_FILE_OPEN
Save IDM_FILE_SAVE
Exit IDM_FILE_EXIT

Giá trị của các ID được Visual Studio define trong file Resource.h

#define ID_FILE_EXIT 32774
#define IDM_FILE_NEW 32775
#define IDM_FILE_OPEN 32776
#define IDM_FILE_SAVE 32777

Append Menu bar vào Dialog

Ở trên, chúng ta đã tạo ra Menu resource. Để Menu hiển thị trên application, chúng ta append menu bar lên Dialog-based.
– Chọn [View] -> [Other Windows] -> [View Resources] – Click chuột phải vào title bar của dialog [MFCApp], chọn [Properties] – Cột Properties của dialog [MFCApp] được hiển thị.

– Tìm item [Menu] trong cột Properties, chỉ định giá trị ID của menu IDR_MENU1

Chúng ta đã hoàn thành việc tạo menu và append menu lên dialog. Tiếp theo chúng ta thực hiện việc thêm source code để xử lí sự kiện khi select các sub-item trong menu.

Xử lí sự kiện khi select sub-item trên menu

Visual Studio support tạo Event Handler (Xử lí sự kiện) bằng Event Handler Wizard. Chúng ta add Event Handler cho sub-item [New], [Open], [Save] và [Exit]. Khi select [New], [Open] hoặc [Save], PC phát ra tiêng beep. Khi select [Exit], close application. Dưới đây là hình minh họa tạo Event Handler cho sub-item [New], việc tạo Event Hanlder cho các sub-item khác, làm tương tự.
– Chọn [View] -> [Other Windows] -> [View Resources] – Chuột phải vào sub-item [New], chọn [Add Event Handler…]

Event Handler Wizard tự động tạo prototype của phương thức xử lí sự kiện khi click vào item của menu

void CMFCAppDlg::OnFileNew()
{
    // TODO: Add your command handler code here
}

void CMFCAppDlg::OnFileOpen()
{
    // TODO: Add your command handler code here
}

void CMFCAppDlg::OnFileSave()
{
    // TODO: Add your command handler code here
}

void CMFCAppDlg::OnFileExit()
{
    // TODO: Add your command handler code here
}

Chúng ta add thêm logic vào các phương thức xử lí sự kiện

void CMFCAppDlg::OnFileNew()
{
    // TODO: Add your command handler code here
    MessageBeep(MB_ICONINFORMATION);
}

void CMFCAppDlg::OnFileOpen()
{
    // TODO: Add your command handler code here
    MessageBeep(MB_ICONINFORMATION);
}

void CMFCAppDlg::OnFileSave()
{
    // TODO: Add your command handler code here
    MessageBeep(MB_ICONINFORMATION);
}

void CMFCAppDlg::OnFileExit()
{
    // TODO: Add your command handler code here
    PostQuitMessage(0);
}

Khi click [New], [Open], [Save], tiếng beep phát ra. Khi click [Exit], close application.

Source code

Download

Demo

Be the first to comment

Leave a Reply