1、添加菜单资源 在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例 如: 菜单1 菜单2 子菜单1(ID_MENUITEM1) 子菜单3(ID_MENUITEM3) 子菜单2(ID_MENUITEM2) 子菜单4(ID_MENUITEM4) 2、在对话框中添加该菜单 先增成员变量HMENU m_hMenu1; 然后在初始化函数OnInitDialog()添加一下代码: m_hMenu1=LoadMenu(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MENU1));//导入资源,创建 菜单 ::SetMenu(this->GetSafeHwnd(),m_hMenu1);//添加到对话框 3、添加子菜单响应函数 点击菜单View-->ClassWizard,在message map选项卡中选择我们要响应的菜单ID_MENUITEM1,然后选 择COMMAND消息,双击添加到member functions中,提示命名,命名后在member functions双击该函数, 编写响应动作 4、注销资源 在对话框的OnDestroy函数中添加一下代码: DestroyMenu(m_hMenu1); 5、关于禁用菜单或者子菜单 子菜单 CMenu * pMenu; CMenu * pSubMenu; pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针 pSubMenu=pMenu->GetSubMenu(1); //1表示从0开始的主菜单序号 pSubMenu->EnableMenuItem(ID_MENUITEM3,MF_GRAYED);//禁用 //ID_MENUITEM3表示子菜单的ID号,MF_GRAYED表示禁用并且为灰色 pSubMenu->EnableMenuItem(ID_MENUITEM3,MF_ENABLED);//启用 主菜单 CMenu * pMenu; pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针 pMenu->EnableMenuItem(1,MF_BYPOSITION |MF_GRAYED);//禁用 //MF_BYPOSITION表示按序列查,从0开始,因为主菜单为popup类型,没有ID编号,只能用这中方式 pMenu->EnableMenuItem(1,MF_ENABLED);//启用 主菜单下的popup联级菜单(其实类似主菜单) CMenu * pMenu; CMenu * pSubMenu; pMenu=CMenu::FromHandle(m_hMenu1);//获得菜单栏的指针 pSubMenu=pMenu->GetSubMenu(0);//获得主菜单序号 pSubMenu->EnableMenuItem(1,MF_BYPOSITION |MF_GRAYED);//禁用 //MF_BYPOSITION表示该主菜单下的第一个菜单,该菜单没有ID号,为popup类型
|
|