六、Windows子窗口控件的清单方块类别—接收来自清单方块的消息
当使用者用鼠标单击清单方块时,清单方块将接收输入焦点。下面的操作可以使父窗口将输入焦点转交给清单方块控件:
SetFocus (hwndList) ;
当清单方块拥有输入焦点时,光标移动键、字母键和Spacebar键都可以用来在该清单方块中选择某项。
清单方块控件向其父窗口发送WM_COMMAND消息,对按钮和编辑控件来说,wParam和lParam变量的含义是相同的:
] |
|
LOWORD (wParam) |
子窗口ID |
HIWORD (wParam) |
通知码 |
lParam |
子窗口句柄 |
通知码及其值如下所示:
LBN_ERRSPACE |
-2 |
LBN_SELCHANGE |
1 |
LBN_DBLCLK |
2 |
LBN_SELCANCEL |
3 |
LBN_SETFOCUS |
4 |
LBN_KILLFOCUS |
5 |
只有清单方块窗口样式包括LBS_NOTIFY时,清单方块控件才会向父窗口发送LBN_SELCHANGE和LBN_DBLCLK。
LBN_ERRSPACE表示清单方块已经超出执行空间。LBN_SELCHANGE表示目前选择已经被改变。这些消息出现在下列情况下:使用者在清单方块中移动加亮的项目时,使用者使用Spacebar键切换选择状态或者使用鼠标单击某项时。LBN_DBLCLK说明某项目已经被鼠标双击(LBN_SELCHANGE和LBN_DBLCLK通知码的值表示鼠标按下的次数)。
根据应用的需要,您也许要使用LBN_SELCHANGE或LBN_DBLCLK,也许二者都要使用。您的程序会收到许多LBN_SELCHANGE消息,但是LBN_DBLCLK消息只有当使用者双击鼠标时才会出现。如果您的程序使用双击,那么您需要提供一个复制LBN_DBLCLK的键盘接口。