使用CreateWindowEx创建仅消息窗口

Jim*_*ell 18 c++ windows winapi

我正在尝试使用CreateWindowEx生成仅消息窗口:

_hWnd = CreateWindowEx( 0, NULL, NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL );
Run Code Online (Sandbox Code Playgroud)

当我的应用程序执行此行时,它始终返回_hWnd = 0.我究竟做错了什么?

Kir*_*sky 44

lpClassName不应该NULL.使用RegisterClassEx函数注册类并将其传递给CreateWindowEx.

static const char* class_name = "DUMMY_CLASS";
WNDCLASSEX wx = {};
wx.cbSize = sizeof(WNDCLASSEX);
wx.lpfnWndProc = pWndProc;        // function which will handle messages
wx.hInstance = current_instance;
wx.lpszClassName = class_name;
if ( RegisterClassEx(&wx) ) {
  CreateWindowEx( 0, class_name, "dummy_name", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL );
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您不想注册窗口类,可以使用预定义的`STATIC`类(用于文本标签和图像框).如果你没有给它一个`hWndParent`参数,它会创建一个独立的窗口! (5认同)
  • @Kirill V. Lyadvinsky:“current_instance”重要吗?它是如何设置的? (3认同)
  • 如果您不注册课程,则无法检索消息。 (2认同)