25
votes

I'm trying to use CreateWindowEx to generate a message-only window:

_hWnd = CreateWindowEx( 0, NULL, NULL, 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL );

When my application executes this line it always returns _hWnd = 0. What am I doing wrong?

2
You should be able to call GetLastError() to get more info.user245019
There is example code to do this via MFC here. This should hide some of the Win32 API parameter complexity.Steve Townsend

2 Answers

51
votes

lpClassName shouldn't be NULL. Register class using RegisterClassEx function and pass it to 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 );
}
-7
votes

According to the Microsoft docs the class name should be "Message".

Cheers & hth.,