MFC之Menu

来源:互联网 发布:java class 信息查看 编辑:程序博客网 时间:2024/04/28 23:34
// ID命名
// 菜单资源号以“IDM_”开始;光标资源ID号以“IDC_”开始;而图标资源ID号以“IDI_”开始。

//加载自定义菜单,在CMainFrame类的OnCreate()方法中加上
//由于menu是局部变量,存储内容会被销毁,所以SetMenu()之后,在其他调用
//会报错,用Detach()把控制权从HWIND分离出来交给Windos
CMenu menu;
menu.LoadMenu(IDR_MYMENU);
this->SetMenu(&menu);
menu.Detach();

//在单文档工程中,MFC AppWizard生成的4个类都可以响应同一个菜单的WM_COMMAND消息。如果在
//这4个类里都加了同一个菜单的响应函数,则4个响应函数将只有一个被执行,它们之间有一个优先顺序
//View->Document->MainFrame->App。

//在框架窗口中获得指向菜单栏的指针,通过CWnd的成员函数GetMenu()来实现
CMenu* GetMenu() const;
//获取子菜单
CMenu* GetSubMenu(int nPos) const;

//为菜单命令添加一个标记,在OnCreate()函数中设置
UINT CMenu::CheekMenuItem(UINT nIDCheckItem, UINT nCheck);

//在菜单命令前面添加图形效果,使用CMenu类的SetMenuItemBitmaps()函数
GetMenu()->GetSubMenu(0)->CheckMenuItem(0, MF_BYPOSITION|MF_CHECKED);
GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN, FALSE);
m_bitmap.LoadBitmap(IDB_BITMAP1);
GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0, MF_BYPOSITON, &m_bitmap, &m_bitmap);

//获取图形标记菜单上显示的位图的尺寸
int GetSystemMetrics(int nIndex);

//禁用菜单命令
//在CMainFrame()函数中
m_bAutoMenuEnable = FALSE;
//在OnCreate()函数中
EnableMenuItem(1, MF_BYPOSTION|MF_DISABLED|MF_GRAYED)

/*
如果一个新的菜单命令没有命令处理函数,应用程序会自动禁用它。
要启用这样的菜单命令,只要求用Event Handler Appwizard为该菜单命令添加
一个命令处理函数。要根据条件有选择的启用和禁用一个菜单命令,可以用
Event Handler Appwizard添加一个界面消息处理函数:
1.添加命令处理UPDATE_COMMAND_UI。
2.添加处理代码到新函数
void CWzdView::OnUpdateWzdButton(CCmdUI* pCmdUI)
{
pCmdUI->Enable(m_bWzd);
}
*/
原创粉丝点击