C++ WIN32 WM_KEYDOWN没有响应

C++ WIN32 WM_KEYDOWN doesn't respond

本文关键字:响应 KEYDOWN WIN32 WM C++      更新时间:2023-10-16

如果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;
}

>MessageBox()显示一个弹出对话框,然后运行自己的模式消息循环来为该对话框的消息提供服务,直到它关闭。 当对话框处于活动状态时,您的击键将转到该对话框,而不是WndProc()所属的窗口。 这就是为什么您没有收到更多WM_KEYDOWN消息的原因。 不应将MessageBox()用作 UI 消息的调试工具,因为它会更改 UI 消息的流。 请改用OutputDebugString()。 这样,调试器(或外部查看器,如 SysInternals DebugView)可以显示调试消息,而不会影响 UI 的行为。