c语言按键 显示信息,二、显示区域鼠标消息—处理Shift键

当CONNECT接收到一个WM_MOUSEMOVE消息时,它把wParam和MK_LBUTTON进行位与(AND)运算,来确定是否按下了左键。wParam也可以用于确定Shift键的状态。例如,如果处理必须依赖于Shift和Ctrl键的状态,那么您可以使用如下所示的方法:

if (wParam & MK_SHIFT)

{

if (wParam & MK_CONTROL)

{

//按下了Shift和Ctrl键

}

else

{

//按下了Shift键

}

{

else

{

if (wParam & MK_CONTROL)

{

//按下了Ctrl键

}

else

{

//Shift和Ctrl键均未按下

}

}

如果您想在程序中同时使用左右键,同时如果您还希望只有单键鼠标的使用者也能使用您的程序,那么您可以这样来写作程序:Shift与左键的组合使用等效于右键。在这种情况下,对鼠标按键的处理可以采用如下所示的方法:

caseWM_LBUTTONDOWN:

if (!(wParam & MK_SHIFT))

{

//处理左键

return 0 ;

}

// Fall through

case WM_RBUTTONDOWN:

//处理右键

return 0 ;

Windows函数GetKeyState(在第六章中介绍过)可以使用虚拟键码VK_LBUTTON、VK_RBUTTON、VK_MBUTTON、VK_SHIFT和VK_CONTROL来传回鼠标按键与Shift键的状态。如果GetKeyState传回负值,则说明已按下了鼠标按键或者Shift键。因为GetKeyState传回目前正在处理的鼠标按键或者Shift键的状态,所以全部状态信息与相应的消息都是同步的。但是,正如不能把GetKeyState用于尚未按下的键一样,您也不能为尚未按下的鼠标按键呼叫GetKeyState。请不要这样做:

while (GetKeyState (VK_LBUTTON) >= 0) ; // WRONG !!!

只有在您呼叫GetKeyState期间处理消息时,而左键已经按下,才会报告键已经按下的消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值