• MFC 菜单操作


    在CMainFrame中OnCreate函数中添加下列:(注意在return(0)前添加)

     

    在文件,新建前打钩 法1: GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);//第一个子菜单,第一个菜单项,按位置访问并且标记;

    法2: GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND | MF_CHECKED);//第一个子菜单,ID号为ID_FILE_NEW的,按COMMAND访问并标记;

     

    将文件->打开菜单项加粗 法1: GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE); //TRUE的意思是按位置索引

    法2: GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN,FALSE); //FALSE的意思是按标识索引,或者说是ID索引

     

    将文件->打开菜单项禁用 GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);//将打开菜单项禁用,变灰,记得将CMainFrame源文件函数中加入m_bAutoMenuEnable=FALSE;

     

    去除所有菜单 SetMenu(NULL);

     

    装载一个菜单资源并显示 CMenu menu; //定义一个菜单对象:menu

    menu.LoadMenu(IDR_MAINFRAME); //Menu程序主菜单的资源标识是IDR_MAINFRAME

    SetMenu(&menu); //调用SetMenu函数,把程序的菜单设置为刚刚加载的菜单对象。

    menu.Detach(); //把菜单句柄和菜单对象分离。

     

    将一个菜单项变为可用或不可用 先通过建立类向导,找到想变为可用的ID号,Messages里选择UPDATE COMMAND UI,增加函数,编辑函数,将函数里输入pCmdUI->Enable();就变为可用了,若想不能用,输入pCmdUI->Enable(FALSE);

     

     

    添加右键菜单: 法1: 点工程->增加到工程->components and controls->到Gallary选VC++ Components,打开,选择Pop-up Menu,点Insert,再确定,就可以添加右键菜单。

     

    法2: 在Resources中Menu文件夹,右击选择“插入Menu”,编辑想显示的右键菜单,然后再C__View类添加WM_RBUTTONDOWN消息响应函数,编辑,在函数里输入:

    CMenu menu;

    menu.LoadMenu(IDR_MENU1);

    CMenu* pPopup=menu.GetSubMenu(0);

    ClientToScreen(&point); //转换屏幕坐标和客户区坐标

    pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this);

     

    点右键菜单显示: 用建立类向导,分别为CMainFrame类和C__View类添加一个响应【显示】的菜单项(ID为IDM_SHOW)的函数,Messages选COMMAND,添加函数,编辑函数,分别添加MessageBox("Main show"),和MessageBox("View show"),结果显示View show。

     

     

    动态菜单操作: 添加一个子菜单 :CMenu menu;

    menu.CreateMenu();

     

     

    GetMenu()->AppendMenu(MF_POPUP,(UINT)menu.m_hMenu,"test");

    menu.Detach();

     

     

    修改应用程序窗口的标题: 在CMainFrame中的PreCreateWindow的CREATETRUCT结构体中添加 cs.lpszName="图像融合软件"; 在return TRUE前添加。

     

     

    在状态栏显示鼠标当前位置: 1, 在C_View 类添加WM_MOUSEMOVE消息的响应函数,里边添加下列响应函数:

    CString str;

    str.Format("x=%d,y=%d",point.x,point.y);

    ((CMainFrame*)GetParent())->m_wndStatusBar.SetWindowText(str);

     

    2,在CMainFrame类的头文件中,将CStatusBar m_wmdStatusBar改为public类;

    3,并且在C__View.cpp文件的前部添加代码: #include "MainFrm.h" 或者将1中的第三行函数改为 ((CMainFrame*)GetParent())->SetMessageText(str);

  • 相关阅读:
    XCode 7 运行 cocos2dx 2.2.6问题小节
    SerializeField和Serializable
    convert2utf8withbom
    NGUI制作字体的三种方法
    js json stringify
    nodejs npm 使用淘宝 NPM 镜像
    js url?callback=xxx xxx的介绍
    强引用 弱引用
    关于xml里的encoding
    js 历史
  • 原文地址:https://www.cnblogs.com/ransn/p/8137357.html
Copyright © 2020-2023  润新知