菜单:
下拉式菜单:主菜单栏,子菜单栏,子菜单栏中的菜单项和分割条。
弹出式菜单:一般可通过单击鼠标右箭等显示,只显示子菜单,不显示主菜单。
热键与快捷键:
CMenu类:
几个主要的成员函数:
BOOL LoadMenu(UINT nIDResource);
加载菜单资源,并将其附加到CMenu对象上,参数nIDResource指定了要加载的
菜单资源的ID。加载成功返回TRUE,否则返回FALSE。
BOOL DeleteMenu(UINT nPosition,UINT nFlags);
在菜单中删除一个菜单项,参数nPosition指定要删除的菜单项,参数nFlags来解释
nPosition的意义:为MF_BYCOMMAND时说明nPositio表示菜单ID,为MF_BYPOSITION
表示菜单的位置,第一个菜单的位置为0。
BOOL TrackPopupMenu(UINT nFlags,int x,int y,CWnd* pWnd,LPCRECT lpRect=0);
用来在指定位置显示一个浮动的弹出式菜单,参数nFlags指定屏幕坐标和鼠标位置的
标志,可以为如下取值:
TPM_GETTERALIGN | 菜单在水平方向上相对于参数x指定的坐标居中显示 |
TPM_LEFTALIGN | 菜单的左侧与参数x指定的坐标值平齐 |
TPM_RIGHTALIGN | 菜单的右侧与参数值x指定的坐标值平齐 |
TPM_BOTTOMALIGN | 菜单的底部与参数y指定的坐标值对齐 |
TPM_TOPALIGN | 菜单项的顶部与参数y指定的坐标值对齐 |
TPM_VCENTERALIGN | 菜单在垂直方向上相对于参数y指定的坐标值居中显示 |
UINT CheckMenuItem(UINT nIDCheckItem,UINT nCheck);
在弹出菜单中为菜单增加选中标记或移除选中标记。nIDCheckItem,指定要选中或移除的菜单项。
参数nCheck指定菜单项的选中状态和如何根据nIDCheckItem确定菜单项的位置,
MF_BYCOMMAND | 为默认值。说明参数nIDCheckItem表示菜单项的ID |
MF_BYPOSITION | 说明参数nIDCheckItem表示菜单项的位置,第一个菜单项的位置是0 |
MF_CHECKED | 为菜单项添加选中标记 |
MF_UNCHECKED |
为菜单项移除选中标记 |
该参数返回菜单项之前的状态,MF_CHECKED或MF_UNCHECKED如果菜单项不存在则返回0或0xFFFFFFFF。
UINT EnableMenuItem(UINT nIDEnableItem,UINT nEnable);
激活,禁用菜单或使其变灰,参数nEnable选项
MF_BYCOMMAND | 为默认值。说明参数nIDCheckItem表示菜单项的ID |
MF_BYPOSITION | 说明参数nIDCheckItem表示菜单项的位置,第一个菜单项的位置是0 |
MF_DISABLED | 禁用菜单项,使其不能被选择但不变灰 |
MF_ENABLED | 激活菜单项,使其能够被选择并由变灰状态恢复 |
MF_GRAYED | 禁用菜单项,使其不能被选择并变灰 |
CMenu* GetSubMenu(int nPos)const;
获取弹出菜单的CMenu对象,nPos指定弹出菜单在菜单中的位置,不能使用ID。返回值是CMenu对象的指针
该CMenu对象的m_hMenu成员为由nPos指定的弹出菜单的句柄,如果不存在这样的CMenu对象则返回NULL,
然后创建一个临时弹出菜单。
菜单消息:
菜单主要能发送两种消息:COMMAND消息和UPDATE_COMMAND_UI消息
COMMAND消息:在菜单项被点击时发送该消息。
UPDATE_COMMAND_UI消息:用来维护菜单项的各项状态,包括,激活,禁用,变灰,选中,未选中等。
在下拉菜单每次打开的时候,所有菜单项的消息都会被发出。如果所属类中为菜单项的该消息添加了
处理函数,则执行相应函数为更新菜单状态,如果菜单项没有发送消息处理函数,也没有COMMAND
消息的处理函数,它就会变灰。