菜单的基本操作_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 菜单的基本操作

菜单的基本操作

 2015/1/29 11:21:44  逆天笨笨蛋  程序员俱乐部  我要评论(0)
  • 摘要:由向导创建的单文档应用程序中的菜单由框架类所拥有,所以对带单的操作要在框架类中进行。以下例子都是在CMainFrame类的OnCreate函数中进行的。注意GetMenu是CWnd类的成员函数,GetSubMenu是CMenu类的成员函数.一、标记菜单项调用CheckMenuItem函数。//通过菜单项索引访问菜单项GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED)
  • 标签:操作 菜单
由向导创建的单文档应用程序中的菜单由框架类所拥有,所以对带单的操作要在框架类中进行。以下例子都是在CMainFrame类的OnCreate函数中进行的。 注意GetMenu是CWnd类的成员函数,GetSubMenu是CMenu类的成员函数.

一、标记菜单项

调用CheckMenuItem函数。
    //通过菜单项索引访问菜单项
    GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION|MF_CHECKED);
    //也可以通过菜单项ID来访问菜单项
    //GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND|MF_CHECKED);
二、图形标记菜单项 设置图形标记用SetMenuItemBitmaps函数。
    static CBitmap bitmap;//定义为成员变量或静态变量,否则OnCreate函数结束后导致
    //对象被析构,其对应资源被销毁,无法显示图形.
    bitmap.LoadBitmapW(IDB_BITMAP1);
    GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(1,MF_BYPOSITION,&bitmap,&bitmap);

可以使用GetSystemMetrics函数获取菜单项标记图形的默认宽度和高度,参数为SM_CXMENUCHECK或SM_CYMENUCHECK分别表示获得菜单项标记图形的宽度和高度.

    CString str;
    str.Format(L"cx=%d,cy=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));
    MessageBox(str);
三、默认菜单项 默认菜单项以粗体显示。一个子菜单只能有一个默认菜单项。
    GetMenu()->GetSubMenu(0)->SetDefaultItem(2,TRUE);//设置默认菜单项
四、禁用菜单项 默认情况下,所有菜单项的更新都是由MFC的命令更新机制完成的,如果想自己更改菜单项的状态,就必须先把CMainFrame类的成员变量m_bAutoMenuEnable设置为FALSE,一般在CMainFrame类的构造函数中进行,这样就不需要对ON_UPDATE_COMMAND_UI或ON_COMMAND消息进行响应处理,不再利用它的菜单命令更新机制去判断哪个菜单可以使用,哪个菜单不能使用了,CMenu类的EnableMenuItem成员函数将能够正常工作.
    GetMenu()->GetSubMenu(0)->EnableMenuItem(3,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);
五、移除和装载菜单 在设置窗口菜单时,如果定义的是局部菜单对象,则一定要在调用SetMenu函数设置窗口菜单之后,立即调用菜单对象的Detach函数将菜单句柄与菜单对象分离.
    SetMenu(NULL);//移除菜单

    CMenu menu;
    menu.LoadMenuW(IDR_MAINFRAME);
    SetMenu(&menu);//重新装载菜单
    menu.Detach();//将菜单对象与菜单句柄分离,这样当menu这个局部变量被析构时
    //其对应的菜单资源不会被销毁。

QQ:373078188" src="/Upload/Images/2015012911/FD0785AC4EE76C70.png" alt="基本菜单操作 - 逆天笨笨蛋 - QQ:373078188" />基本菜单操作 - 逆天笨笨蛋 - QQ:373078188基本菜单操作 - 逆天笨笨蛋 - QQ:373078188基本菜单操作 - 逆天笨笨蛋 - QQ:373078188

    菜单项标记        菜单项图形标记          禁用菜单项          默认菜单项

 

发表评论
用户名: 匿名