除主窗口外,我正在尝试创建另一个顶级窗口。问题是,当我将第二个窗口的hMenu
参数设置为非NULL值时,它不会显示。
e.g:
此窗口显示(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。
答案 0 :(得分:1)
将(HMENU)4
作为hMenu
参数传递给CreateWindowEx
以创建顶级窗口,告诉系统将菜单附加到该窗口。此菜单具有菜单句柄4.菜单句柄(HMENU
)从CreateMenu
等函数返回。如果句柄不是有效的HMENU
窗口创建失败。
你的观察,窗口没有出现会误导你自己相信窗口确实存在。该窗口不存在,CreateWindowEx
返回NULL
。建议检查返回值,并在API调用失败时调用GetLastError
通常非常有用。