背景:因為對話框界面上的空間有限,為了節省空間,我決定采用一個MFCMenuButton用來實現同一類按鈕事件。本來我打算設置兩個按鈕:“單個刪除文件”和“清空所有文件”兩個按鈕,但是空間太小,而且這兩個按鈕的功能相似,所以,我干脆將這兩個按鈕組合成為一個按鈕,采用下拉菜單選擇的方式分別觸發按鈕事件。
首先,需要創建一個菜單資源。如果資源視圖中沒有Menu文件夾,則需要在資源視圖窗口右擊后綴為.rc的文件夾,選擇添加資源,彈出對話框。
在彈出的對話框中選擇Menu,之后點擊新建按鈕。在新建的Menu上面設置下拉菜單每個選項的名字。
分別設置兩個選項的ID如下所示。
好了,現在這個名字叫做"IDR_MENU1"的菜單就編輯好了,下面在MFCMenuButton中調用該菜單資源即可。
首選,需要新建一個MFCMenuButton的控件,然后添加關聯變量,假設為m_MenuButton1。
在對話框的OnInitDialog()函數中插入下面的代碼,載入菜單資源。
1 CMenu* pMenu = new CMenu; 2 pMenu->LoadMenu(IDR_MENU1); //載入菜單資源 3 m_MenuButton1.m_hMenu = pMenu->GetSubMenu(0)->GetSafeHmenu();
在按鈕事件中插入下面的代碼進行測試。
void CTABPAGE2::OnBnClickedMfcmenubuttonDelete1() { // TODO: 在此添加控件通知處理程序代碼 if(m_MenuButton1.m_nMenuResult == ID_X_Single) { AfxMessageBox(_T("單個刪除文件!")); } else if(m_MenuButton1.m_nMenuResult == ID_X_All) { AfxMessageBox(_T("刪除全部文件")); } return; }
彈出對話框的部分替換成為功能語句即可分別完成不同的功能。