添加菜单栏步骤
菜单栏CMenu:
1、添加菜单
1、在资源文件中 添加Menu资源,确定ID
2、可在Menu上插入相关菜单
2、绑定对话框
在资源文件中找到对话框Dialog,在其属性上,添加Menu的ID
3、添加菜单响应函数
两种方法
1、在项目-类向导上,确定类名后,在命令-对象上找到相应菜单Id
如:ID_Menu_OpenFile. 添加COMMAND消息就好。
2、在资源文件Menu上,直接双击此菜单即可。
4、在对话框设置菜单状态:
CMenu *menu = GetMenu();
if(isOpenFile){
menu->EnableMenuItem(ID_OpenFile_Menu, MF_GRAYED);
menu->EnableMenuItem(ID_CloseFile_Menu, MF_ENABLED);
menu->EnableMenuItem(ID_PicEdit_Menu, MF_ENABLED);
} else{
menu->EnableMenuItem(ID_OpenFile_Menu, MF_ENABLED);
menu->EnableMenuItem(ID_CloseFile_Menu, MF_GRAYED);
menu->EnableMenuItem(ID_PicEdit_Menu, MF_GRAYED);
}
5、添加浮点菜单
CMenu *pMenu, Menu;
Menu.LoadMenu(IDR_MENU2);
pMenu = Menu.GetSubMenu(0);
ClientToScreen(&mousePos); //mousePos为位置
pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, mousePos.x, mousePos.y, this);
6、添加菜单快捷方式
1、菜单上的提示,在菜单命名时,可加\tCtrl+O,如:打开文件\tCtrl+O
2、在资源文件中添加:Accelerator快捷资源,然后编辑:
在ID栏填写所需要快捷的菜单ID,修饰符、键 自行编辑
3、在对话框类上,添加快捷键变量:HACCEL mhAccel;
4、在类的成员函数OnInitDialog()中添加:
hAccel = ::LoadAccelerators(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_ACCELERATOR1));
5、在PreTranslateMessage(MSG* pMsg)函数中,添加:
if(::TranslateAccelerator(GetSafeHwnd(),mhAccel,pMsg))
return TRUE;