主题:[原创]组合键问题
bandit008
[专家分:30] 发布于 2008-04-23 21:43:00
请教各位个问题:
如何捕获组合键的消息?
我在PreTranslateMessage(MSG* pMsg)
if(pMsg->message == WM_KEYDOWN)
{
if(pMsg->wParam==VK_CONTROL)
{
if(LOWORD(pMsg->lParam)==VK_SHIFT)
{
//my code
}
}
}
LOWORD(pMsg->lParam)不能得到第二个键的参数。
怎么得到第二个键的参数呢?
回复列表 (共4个回复)
沙发
风奉 [专家分:260] 发布于 2008-04-24 11:36:00
如果是想得到功能键是否按下可以用GetKeyState(VK_LSHIFT),返回值If the high-order bit is 1, the key is down; otherwise, it is up.
查下msdn就知道了
板凳
bandit008 [专家分:30] 发布于 2008-04-24 20:54:00
if(pMsg->wParam==VK_CONTROL)
{
if (GetKeyState(VK_SHIFT))
{
//my code
}
}
这样可以实现,但有个问题就是:GetKeyState()只是判断是否按下过,也就是说不是同时按下两个键的时候(按下shift 松开 再按ctrl )my code也会执行,我想捕获的是同时按下的情况。查了下MSDN lparam的第29位是对ALT键的介绍:
Specifies the context code. The value is 1 if the ALT key is held down while the key is pressed; otherwise, the value is 0.
有更好的方法么?请不吝赐教!
3 楼
bandit008 [专家分:30] 发布于 2008-04-25 15:21:00
问题已解决!谢谢 风奉 !
4 楼
vfdff [专家分:740] 发布于 2008-05-24 00:52:00
if( (pMsg->wParam==VK_CONTROL) && GetKeyState(VK_SHIFT))
{
//my code
}
我来回复