如果 WM_KEYDOWN 有一个messagebox()
,以便了解此案例的功能。
有人可以帮助我为什么这个案子没有回应?
我正在尝试调试这个,而我从键盘插入一些字母,调试器没有进入 WM_KEYDOWN 的情况。
感谢所有人!
这是我的代码:
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_CREATE:
break;
case WM_COMMAND:
break;
case WM_KEYDOWN:
MessageBox(NULL,L"test",L"Information",MB_ICONINFORMATION);
break;
case WM_DESTROY:
// DESTROY WINDOW
break;
default:
return DefWindowProc( hwnd, msg, wParam, lParam );
}
return 0;
}
答案 0 :(得分:3)
MessageBox()
显示一个弹出对话框,然后运行自己的模态消息循环来为该对话框提供消息,直到它关闭。当对话框处于活动状态时,您的击键将转到该对话框而不是WndProc()
所属的窗口。这就是为什么您没有收到更多WM_KEYDOWN
条消息的原因。您不应该使用MessageBox()
作为UI消息的调试工具,因为它会更改UI消息的流程。请改用OutputDebugString()
。这样,您的调试器(或者像SysInternals DebugView这样的外部查看器)可以显示调试消息,而不会影响UI的行为。