请问Windows消息机制怎么判断CTRL和A同时按下?
就是一个CTRL+A的组合键,同时按下时在窗口中显示字符串"CTRL+Aispressed" 本帖最后由 JayChen 于 2015-12-4 18:15 编辑switch (message){
case WM_KEYDOWN:
switch (wParam){
case VK_UP:
str = L"You had hitted the UP key";
break;
case VK_SHIFT:
str = L"You had hitted the SHIFT key";
break;
case VK_CONTROL:
str = L"You had hitted the CTRL key";
break;
default:
break;
}
InvalidateRect(hWnd, NULL, 0);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, X, Y, str, _tcsclen(str));
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
}
return 0;
}
这是之前判断单个按键按下的代码,我想知道怎么判断CTRL+A组合键按下的代码,谢谢各位了 本帖最后由 JayChen 于 2015-12-5 15:13 编辑
唉╮( ̄▽ ̄")╭。。。。。。没人回,我自顶,我找到了判断CTRL+A的方法,但是这个方法对于SHIFT+B没用,不知道为什么。。在WM_CHAR消息中判断wParam==('A'&VK_CONTROL)即可判断CTRL和A同时按下,代码如下
switch (message){
case WM_CHAR:
if (wParam == ('A' & VK_CONTROL))
str = L"You had hitted the CTRL+A";
break;
case WM_KEYDOWN:
switch (wParam){
case VK_UP:
str = L"You had hitted the UP key";
break;
case VK_SHIFT:
str = L"You had hitted the SHIFT key";
break;
case VK_CONTROL:
str = L"You had hitted the CTRL key";
break;
default:
break;
}
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, X, Y, str, _tcsclen(str));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
} 求大神帮助解释。。 解决了。。。找到一个函数可以判断SHIFT+B组合键消息。。 但是这个函数对判断CTRL+A没有用。。。不知道为啥啊。。。,所以代码就变成了这样。。。。
switch (message){
case WM_CHAR:
if (wParam == ('A'& VK_CONTROL))
str = L"You had hitted the CTRL+A";
if (wParam == 'b' && GetKeyState(VK_SHIFT))
str = L"You had hitted the SHIFT+B";
break;
case WM_KEYDOWN:
switch (wParam){
case VK_UP:
str = L"You had hitted the UP key";
break;
case VK_SHIFT:
str = L"You had hitted the SHIFT key";
break;
case VK_CONTROL:
str = L"You had hitted the CTRL key";
break;
default:
break;
}
InvalidateRect(hWnd, NULL, TRUE);
break;
case WM_PAINT:
hDC = BeginPaint(hWnd, &ps);
TextOut(hDC, X, Y, str, _tcsclen(str));
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
break;
} 单机版论坛真是太好玩了 if(wParam&VK_CONCROL)
{
if(wParam&'A')
{
}
}
}
if(wParam&VK_CONCROL)
{
if(wParam&'A')
{
}
}
}
页:
[1]