MFC菜单的使用
?
?
1、? 創建彈出菜單:
(1)、利用向導,創建一個基于單文檔的應用程序;
(2)、在資源視圖中選中”menu”,鼠標右鍵插入一新菜單IDR_POPMENU;
(3)、在IDR_POPMENU菜單中添加”彈出菜單”選項,在”彈出菜單”下添加菜單命令”復制”、”粘貼”、”查找”、”測試”,分別修改其ID;
(4)、分別對四個選項,添加消息處理函數,選中某選項,鼠標右鍵單擊,選擇Add Event Handler,類的類型選中view,消息類型選擇COMMAND;
(5)、選擇Class View,選中view類,添加鼠標右鍵單擊消息;
(6)、在此右鍵單擊消息中添加如下代碼即可:
CMenu?? menu;
??? ??? menu.LoadMenu(IDR_POPMENU);
??? ??? CMenu?? *pContextMenu=menu.GetSubMenu(0);
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x, point.y, AfxGetMainWnd());
2、創建動態菜單:
(1)、利用向導,創建一個基于單文檔的應用程序;
(2)、在資源視圖中選中”menu”,鼠標右鍵插入一新菜單IDR_DYN;
(3)、在IDR_DYN菜單中添加”動態菜單”選項,在”動態菜單”下添加菜單命令”FIRST動態菜單”、”SECOND動態菜單”,分別修改其ID;
(4)、分別對兩個選項,添加消息處理函數,選中某選項,鼠標右鍵單擊,選擇Add Event Handler,類的類型選中CMainFrame,消息類型選擇COMMAND;
(5)、在資源視圖中,定位到IDR_MAINFRAME主菜單,添加新項”動態菜單演示”選項,在”動態菜單演示”下添加兩個新項”添加動態菜單”、”刪除動態菜單”,修改ID;
(6)、添加”添加動態菜單”消息處理函數,類的類型選中CMainFrame,消息類型選擇COMMAND;添加如下代碼:
??? CMenu m_addMenu,*m_pMainmenu;
??? if (!m_addMenu.LoadMenu(IDR_DYN))
??? {
?????? MessageBox(_T("動態菜單裝入失敗!"),_T("錯誤"),MB_OK|MB_ICONERROR);
?????? return;
??? }
??? CString str=_T("自己的動態菜單(&D)");
??? m_pMainmenu=AfxGetMainWnd()->GetMenu();
m_pMainmenu->InsertMenu(1,MF_POPUP|MF_BYPOSITION|MF_STRING,(UINT)m_addMenu.GetSubMenu(0)->m_hMenu,str);
??? m_pMainmenu->Detach();
??? m_addMenu.Detach();
DrawMenuBar();
(7)添加”刪除動態菜單”消息處理函數,類的類型選中CMainFrame,消息類型選擇COMMAND;添加如下代碼:
??? CMenu *m_pMainmenu;
??? CString str;
??? m_pMainmenu=AfxGetMainWnd()->GetMenu();
??? for (int i=m_pMainmenu->GetMenuItemCount()-1;i>=0;i--)
??? {
?????? m_pMainmenu->GetMenuString(i, str,MF_BYPOSITION);
?????? if (str==_T("自己的動態菜單(&D)"))
?????? {
?????????? m_pMainmenu->DeleteMenu(i,MF_BYPOSITION);
?????????? break;
?????? }
??? }
??? m_pMainmenu->Detach();
DrawMenuBar();
3、創建若干對話框的菜單
(1)、利用向導,創建一個基于對話框的應用程序;
(2)、選中資源視圖,鼠標右鍵插入ResourceàMenu,ID為IDR_DLG_MENU;
(3)、為IDR_DLG_MENU添加項目”對話框菜單”,然后在該項目下添加”文件菜單”、”運行記事本菜單”、”退出應用程序菜單”,并修改其ID;
(4)、在對話框屬性窗口中選中menu,設置為IDR_DLG_MENU;
(5)、分別對三個選項,添加消息處理函數,選中某選項,鼠標右鍵單擊,選擇Add Event Handler,類的類型選中Dlg類,消息類型選擇COMMAND;
(6)、在”運行記事本菜單”消息處理函數中,添加如下代碼:
::ShellExecute(this->m_hWnd, "open","NOTEPAD.EXE", NULL,NULL, SW_SHOWNORMAL);
(7)、在”退出應用程序菜單”消息處理函數中,添加如下代碼:
OnOK();
總結
- 上一篇: matlab神经网络工具箱函数汇总
- 下一篇: 计算机视觉相关网站