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);

原文地址:https://www.cnblogs.com/ransn/p/8137357.html