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