Сбой создания окна с ненулевым параметром hMenu

В дополнение к главному окну я пытаюсь создать еще одно окно верхнего уровня. Проблема в том, что когда я устанавливаю второе окно 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.

-1

Решение

Переходя (HMENU)4 как hMenu параметр для CreateWindowEx при создании окна верхнего уровня система сообщает приложить к нему меню. Это меню имеет дескриптор меню 4. Дескриптор меню (HMENU) возвращается из функций, таких как CreateMenu. Если дескриптор недействителен HMENU создание окна не удается.

Ваше наблюдение, что окно не появляется вводит себя в заблуждение, заставляя поверить, что окно действительно существует. Окно не существует, и CreateWindowEx возвращается NULL, Проверка возвращаемых значений рекомендуется, и вызов GetLastError когда сбой вызова API обычно очень полезен.

1

Другие решения

Других решений пока нет …