我在ontimer消息处理函数里面用PeekMessage判断当前有没有onkeydown消息,
为什么我在按下按键时没有正确执行啊,代码如下:
void CInvokeOnKeyDownDlg::OnTimer(UINT_PTR nIDEvent)
{
MSG msg;
if (::PeekMessage(&msg, m_hWnd, 0, 0, PM_NOREMOVE))
{
if (msg.message == WM_KEYDOWN)
{
Flag = true;
AfxMessageBox("peek message");
}
}
if (Flag)
AfxMessageBox("key down in btn click");
}
谢谢各位!
为什么我在按下按键时没有正确执行啊,代码如下:
void CInvokeOnKeyDownDlg::OnTimer(UINT_PTR nIDEvent)
{
MSG msg;
if (::PeekMessage(&msg, m_hWnd, 0, 0, PM_NOREMOVE))
{
if (msg.message == WM_KEYDOWN)
{
Flag = true;
AfxMessageBox("peek message");
}
}
if (Flag)
AfxMessageBox("key down in btn click");
}
谢谢各位!
另外,你可以实现WM_KEYDOWN的消息映射宏,或在PreTranslateMessage中进行处理。
请看http://topic.csdn.net/u/20081122/13/62b2c048-faec-40bd-81e5-3ed9cc866ef1.html
http://topic.csdn.net/u/20081122/13/62b2c048-faec-40bd-81e5-3ed9cc866ef1.html
要解决上面的问题可以用:
1.PeekMessage(&msg, m_hWnd, 0, 0, PM_NOREMOVE);
2.GetQueueStatus(QS_KEY);谢谢楼上的朋友们!
1.PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE);
2.GetQueueStatus(QS_KEY);