我的问题是我在哪里可以添加这行代码:
if( GetKeyState(VK_F2) & 0x8000 )
我尝试了不同的方式,但是当我编译并运行它并按F1或F2键时,它会执行所有功能。我想在按下键时调用F1键功能,按下时按F2键。我正在使用Visual Studio 2010 Express。
这是我的代码:
switch(uMsg)
{
case WM_INITDIALOG:
{
// do something here
break;
}
case WM_TIMER:
{
if( GetKeyState(VK_F1) & 0x8000 )
if( GetKeyState(VK_F2) & 0x8000 )
{
// do something here
}
break;
}
case WM_CLOSE:
{
// do something here
}
}
return 0;
答案 0 :(得分:1)
已解决:)很好,我的问题在尝试了一段时间后终于解决了问题 是那么小"休息;"声明请查看其完美无瑕的代码。 非常感谢你的时间和帮助赞赏
case WM_TIMER:
{
if(GetKeyState(VK_F1) & 0x8000 )
{
MessageBoxA (NULL, TEXT ("This is a call from F1 key!"), TEXT("Test F1 key"), MB_OK );
}
//break; << this was the one that was giving me the problem
if(GetKeyState(VK_F2) & 0x8000 )
{
MessageBoxA (NULL, TEXT ("This is a call from F2 key!"), TEXT("Test F2 key"), MB_OK );
}
//if(GetKeyState(VK_F3) & 0x8000 ) << i can add multi VK_ keys here
break; // << should be here
}
case WM_CLOSE:
答案 1 :(得分:0)
几点:
WM_TIMER
s。GetKeyState
。 GetAsyncKeyState
在通话时处理键盘的状态;当前消息发送时,GetKeyState
处理键盘状态。这往往会使事情更紧密地同步。也就是说,如果你在WM_TIMER
进行投票,那可能并不重要。如果高位为1,则键为关闭;否则,它就结束了。
如果低位为1,则切换键。如果键打开,则会切换一个键,例如CAPS LOCK键。如果低位为0,则键关闭并取消加盖。当键切换时,键盘上的切换键指示灯(如果有)将打开,而当键未被切换时,键将关闭。
因此,要检查 F1 :
if( GetKeyState(VK_F1) & 0x8000 )
{
...
}