|
LECT讯息。随著使用者在功能表项中移动游标或者滑鼠,程式会收到许多WM_MENUSELECT讯息。这对实作那些包含对功能表项的文字描述的状态列是很有帮助的。WM_MENUSELECT的参数如下所示:
LOWORD
(wParam):被选中项目:功能表ID或者突现式功能表代号
HIWORD
(wParam):选择旗标
lParam:
包含被选中项目的功能表代号
WM_MENUSELECT是一个功能表追踪讯息,wParam的值告诉您目前选择的是功能表中的哪一项(加高亮度显示的那个),wParam的高字组中的「选择旗标」可以是下列这些旗标的组合:MF_GRAYED、MF_DISABLED、MF_CHECKED、MF_BITMAP、MF_POPUP、MF_HELP、MF_SYSMENU和MF_MOUSESELECT。如果您需要根据对功能表项的选择来改变视窗显示区域的内容,那么您可以使用WM_MENUSELECT讯息。许多程式把该讯息发送给DefWindowProc。
当Windows准备显示一个突现式功能表时,它给视窗讯息处理程式发送一个WM_INITMENUPOPUP讯息,参数如下:
wParam:
突现式功能表代号
LOWORD
(lParam):突现式功能表索引
HIWORD
(lParam): 系统功能表为1,其他为0
如果您需要在显示突现式功能表之前启用或者禁用功能表项,那么这个讯息就很重要。例如,假定程式使用突现式功能表上的 Paste 命令从 剪贴簿 复制文字,当您收到突现式功能表中的WM_INITMENUPOPUP讯息时,应确定剪贴簿内是否有文字存在。如果没有,那么应该使 Paste 功能表项无效化。我们将在本章後面修改的POPPAD程式中看到这样的例子。
最重要的功能表讯息是WM_COMMAND,它表示使用者已经从功能表中选中了一个被启用的功能表项。第八章中的WM_COMMAND讯息也可以由子视窗控制项产生。如果您碰巧为功能表和子视窗控制项使用同一ID码,那么您可以通过lParam的值来区别它们,功能表项的lParam其值为0,请参见表10-1。
|