除了主窗口,我正在尝试创建另一个顶级窗口。问题是,当我将第二个窗口的
hMenu
参数设置为非 NULL 值时,它不会显示。
例:
此窗口显示 (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
。建议检查返回值,并且在 API 调用失败时调用 GetLastError
通常很有帮助。
嗯..我知道OP是很久以前的事了,但无论如何让我插话。
可以说,(HMENU)4 not 有效的菜单handle,例如从 CreateMenu() 返回的菜单。
如果窗口是子窗口,它将是一个有效的control ID。 如果在 WNDCLASS 结构中指定,数字 4 也是一个有效的菜单resource ID。
干杯