如果希望您的视窗讯息处理程式能够收到双按键的滑鼠讯息,那么在呼叫RegisterClass初始化视窗类别结构时,必须在视窗风格中包含CS_DBLCLKS识别字:
如果在视窗风格中未包含CS_DBLCLKS,而使用者在短时间内双击了滑鼠按键,那么视窗讯息处理程式会接收到下面这些讯息:
WM_LBUTTONDOWN
WM_LBUTTONUP
视窗讯息处理程式可能在这些键的讯息之前还收到了其他讯息。如果您想实作自己的双击处理,那么您可以使用Windows函式GetMessageTime取得WM_LBUTTONDOWN讯息之间的相对时间。第八章将更详细地讨论这个函式。
如果您的视窗类别风格中包含了CS_DBLCLKS,那么双击时视窗讯息处理程式将收到如下讯息:
WM_LBUTTONDBLCLK
WM_LBUTTONDBLCLK讯息简单地替换了第二个WM_LBUTTONDOWN讯息。
如果双击中的第一次键操作完成单击的功能,那么双击这一讯息是很容易处理的。第二次按键(WM_LBUTTONDBLCLK讯息)则完成第一次按键以外的事情。例如,看看Windows Explorer中是如何用滑鼠来操作档案列表的。按一次键将选中档案,Windows Explorer用反白显示列指出被选择档案的位置。双击则实作两个功能:第一次是单击那个选中档案;第二次则指向Windows Explorer以打开该档案。执行方式相当简单,如果双击中的第一次按键不执行单击功能,那么滑鼠处理方式会变得非常复杂。
非显示区域滑鼠讯息
在视窗的显示区域内移动或按下滑鼠按键时,将产生10种讯息。如果滑鼠在视窗的显示区域之外但还在视窗内,Windows就给视窗讯息处理程式发送一条「非显示区域」滑鼠讯息。视窗非显示区域包括标题列、功能表和视窗卷动列。
通常,您不需要处理非显示区域滑鼠讯息,而是将这些讯息传给Def