В дополнение к главному окну я пытаюсь создать еще одно окно верхнего уровня. Проблема в том, что когда я устанавливаю второе окно hMenu
параметр к ненулевому значению, он не отображается.
например:
Это окно отображается (hMenu == 0)
case IDC_BUTTON_SEND_COMMAND:
{
CreateWindowExW(NULL,
L"CommandWindow", L"Send Command",
WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
100, 100, 600, 400,
NULL,
(HMENU)0,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
break;
}
Это окно не отображается (hMenu == 4)
case IDC_BUTTON_SEND_COMMAND:
{
CreateWindowExW(NULL,
L"CommandWindow", L"Send Command",
WS_VISIBLE | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,
100, 100, 600, 400,
NULL,
(HMENU)4,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), NULL);
break;
}
Я использую Windows 7.
Переходя (HMENU)4
как hMenu
параметр для CreateWindowEx
при создании окна верхнего уровня система сообщает приложить к нему меню. Это меню имеет дескриптор меню 4. Дескриптор меню (HMENU
) возвращается из функций, таких как CreateMenu
. Если дескриптор недействителен HMENU
создание окна не удается.
Ваше наблюдение, что окно не появляется вводит себя в заблуждение, заставляя поверить, что окно действительно существует. Окно не существует, и CreateWindowEx
возвращается NULL
, Проверка возвращаемых значений рекомендуется, и вызов GetLastError
когда сбой вызова API обычно очень полезен.
Других решений пока нет …