只有对三键滑鼠,视窗讯息处理程式才会收到MBUTTON讯息;只有对双键或者三键滑鼠,才会接收到RBUTTON讯息。只有当定义的视窗类别能接收DBLCLK(双击)讯息,视窗讯息处理程式才能接收到这些讯息(请参见本章中「双击滑鼠按键」一节)。
对於所有这些讯息来说,其lParam值均含有滑鼠的位置:低字组为x座标,高字组为y座标,这两个座标是相对於视窗显示区域左上角的位置。您可以用LOWORD和HIWORD巨集来提取这些值:
wParam的值指示滑鼠按键以及Shift和Ctrl键的状态。您可以使用表头档案WINUSER.H中定义的位元遮罩来测试wParam。MK字首代表「滑鼠按键」。
例如,如果收到了WM_LBUTTONDOWN讯息,而且值
是TRUE(非0),您就知道当左键按下时也按下了Shift键。
当您把滑鼠移过视窗的显示区域时,Windows并不为滑鼠的每个可能的图素位置都产生一个WM_MOUSEMOVE讯息。您的程式接收到WM_MOUSEMOVE讯息的次数,依赖於滑鼠硬体,以及您的视窗讯息处理程式在处理滑鼠移动讯息时的速度。换句话说,Windows不能用未处理的WM_MOUSEMOVE讯息来填入讯息伫列。当您执行下面将描述的CONNECT程式时,您将会更了解WM_MOUSEMOVE讯息处理的速率。
如果您在非活动视窗的显示区域中按下滑鼠左键,Windows将把活动视窗改为在其中按下滑鼠按键的视窗,然後把WM_LBUTTONDOWN讯息送到该视窗讯息处理程式。当视窗讯息处理程式得到WM_LBUTTONDOWN讯息时,您的程式就可以安全地假定该视窗是活动化的了。不过,您的视窗讯息处理程式可能在未接收