//标记菜单
GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION |MF_CHECKED);//这个函数设置指定的菜单项的复选标记的状态属性
//函数里的数字是菜单栏的索引,不是下拉菜单的索引
//GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_NEW,MF_BYCOMMAND |MF_CHECKED);//使用id也可以
//默认菜单项
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);/*如果此参数为FALSE,uItem是一个菜单项的标识符。
否则,它是一个菜单项的位置,分隔符在子菜单里也占索引位置*/
//图形标记菜单
CString str;
str.Format("x=%d,y=%d",GetSystemMetrics(SM_CXMENUCHECK),GetSystemMetrics(SM_CYMENUCHECK));//尺寸,像素,默认的菜单检查标记位图
//此函数检索的尺寸宽度和高度 Windows的显示元素和系统配置设置。
//由GetSystemMetrics检索所有尺寸为像素
MessageBox(str);
m_bit.LoadBitmap(IDB_BITMAP1);
GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(2,MF_BYPOSITION,&m_bit,&m_bit);
/*SetMenuItemBitmaps函数与菜单项指定的位图。
菜单项是否被选中或清除,系统会显示相应的位图旁边的菜单项。
MF_BYCOMMAND指示uPosition给出了菜单项的标识符。
如果没有MF_BYCOMMAND或MF_BYPOSITION指定,MF_BYCOMMAND是默认的标志。
MF_BYPOSITION指示uPosition使从零开始的菜单项的相对位置。
hBitmapUnchecked位图的句柄时显示的菜单项没有被选中。
hBitmapChecked位图的句柄时显示菜单项被选中。*/
/*一旦在cmailframe类的构造函数中把成员变量 m_bAutoMenuEnable=FALSE后
就不需要对ON_UPDATE_COMMAND_UI或ON_COMMAND消息进行相应处理了,CMENU类的EnableMenuItem函数
能够正常工作,我们想要自己更改菜单的状态,那必须先把m_bAutoMenuEnable变量设置为FLASH,之后我们对
菜单项的状态更新才能起作用*/
//禁用菜单
GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED);/*EnableMenuItem启用或禁用(灰色)指定的菜单项
nIDEnableItem指定的菜单项被启用,由nEnable决定。此参数可以指定弹出菜单项以及标准的菜单项。
nEnable指定应采取的行动。它可以是一个MF_DISABLED,MF_ENABLED,或MF_GRAYED结合MF_BYCOMMAND或MF_BYPOSITION。
这些值可以被组合使用按位或运算。这些值的含义如下:
MF_BYCOMMAND指定参数给出命令ID现有的菜单项。这是默认的。
MF_BYPOSITION指定参数给出了现有的菜单项的位置。第一项是在位置0。
MF_DISABLED禁用的菜单项,以便它不能被选中,但不暗淡了。
MF_ENABLED启用菜单项,以便它可以选择,并恢复其灰色状态。
MF_GRAYED禁用的菜单项,以便它不能被选中变暗了。*/
移除和装载菜单
/*SetMenu(NULL);//移除菜单,如果里面的参数为null则全部菜单将移除
CMenu menu;
menu.LoadMenu(IDR_MAINFRAME);
SetMenu(&menu);
menu.Detach();*/
//detach函数将菜单句柄与菜单对象分离。一般是与setmenu一起使用,否则很有可能发生异常
/*快捷菜单手动设计,又名右击菜单*/
CMenu menu;
menu.LoadMenu(IDR_MENU1);
CMenu* pPopup = menu.GetSubMenu(0);
ClientToScreen(&point);//这个函数转换成客户的指定点坐标屏幕坐标
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,GetParent());//获取父窗口的指针。
//此函数显示在指定的位置浮动菜单式和跟踪的弹出式菜单项的选择。浮动弹出式菜单中可以显示在屏幕上任意位置
/*hMenu句柄快捷菜单显示。句柄可以通过调用CreatePopupMenu创建一个新的快捷菜单,或致电GetSubMenu来检索处理,
与现有的菜单项关联的子获得。
uFlags位标志指定如何TrackPopupMenu职位的快捷菜单。
下表显示的水平位置的可能值。值描述
TPM_CENTERALIGN中心的快捷菜单上水平相协调的x参数指定。
在快捷菜单上,以便其左侧是与坐标的x参数指定对齐TPM_LEFTALIGN位置。
在快捷菜单上,以便其右侧是与坐标的x参数指定对齐TPM_RIGHTALIGN位置。
下表显示了垂直定位可能标志值。
TPM_BOTTOMALIGN如果设置此标志,函数的快捷菜单,以便其底部是与坐标的y参数指定的一致立场。
TPM_TOPALIGN如果设置此标志,函数的快捷菜单,以便其顶面是与坐标的y参数指定的一致立场。
TPM_VCENTERALIGN如果设置此标志,函数中心的快捷菜单垂直相协调各参数指定的y*/
函数:
GetMenu():此函数在框架窗口中获得指向菜单的指针。
GetSubMenu(0):该函数取得被指定菜单激活的下拉式菜单或子菜单的句柄。
CheckMenuItem:此函数为菜单添加一个标记。
SetDefaultItem:此函数设置默认的菜单项。
EnableMenuItem:次函数将某个菜单项禁用。
setmenu:移除菜单项。
detach:将菜单句柄与菜单对象分离
TrackPopupMenu:此函数显示在指定的位置浮动菜单式和跟踪的弹出式菜单项的选择。
浮动弹出式菜单中可以显示在屏幕上任意位置.
ClientToScreen:这个函数转换成客户的指定点坐标屏幕坐标.