处理Shift键
当CONNECT接收到一个WM_MOUSEMOVE讯息时,它把wParam和MK_LBUTTON进行位元与(AND)运算,来确定是否按下了左键。wParam也可以用於确定Shift键的状态。例如,如果处理必须依赖於Shift和Ctrl键的状态,那么您可以使用如下所示的方法:
如果您想在程式中同时使用左右键,同时如果您还希望只有单键滑鼠的使用者也能使用您的程式,那么您可以这样来写作程式:Shift与左键的组合使用等效於右键。在这种情况下,对滑鼠按键的处理可以采用如下所示的方法:
Windows函式GetKeyState(在第六章中介绍过)可以使用虚拟键码VK_LBUTTON、VK_RBUTTON、VK_MBUTTON、VK_SHIFT和VK_CONTROL来传回滑鼠按键与Shift键的状态。如果GetKeyState传回负值,则说明已按下了滑鼠按键或者Shift键。因为GetKeyState传回目前正在处理的滑鼠按键或者Shift键的状态,所以全部状态资讯与相应的讯息都是同步的。但是,正如不能把GetKeyState用於尚未按下的键一样,您也不能为尚未按下的滑鼠按键呼叫GetKeyState。请不要这样做:
只有在您呼叫GetKeyState期间处理讯息时,而左键已经按下,才会报告键已经按下的讯息。
双击滑鼠按键
双击滑鼠按键是指在短时间内单击两次。要确定为双击,则这两次单击必须发生在其相距的实际位置十分接近的状况下(