求助大神,为什么创建子窗口失败
win32吧
全部回复
仅看楼主
level 1
破面一护 楼主
为什么我在使用CreateWindow函数创建子窗口时,hMenu参数填我自己定义的宏ID时就创建子窗口失败,但是填0或者NULL就能创建成功
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId = LOWORD(wParam);
switch (message)
{
case WM_COMMAND:
{
// 分析菜单选择:
switch (wmId)
{
case IDM_ABOUT:
g_hSubWindow = CreateWindow(
szWindowClass,
L"subwindow",
WS_CAPTION | WS_SYSMENU | WS_CHILD | WS_POPUP | WS_VISIBLE,
200,
200,
400,
400,
hWnd,
//******************************************************问题在这里******************************************************
(HMENU)ID_SUBWINDOW, //***************这里填0就没问题,填我定义的宏ID就创建子窗口失败
hInst,
NULL
);
if (!g_hSubWindow)
{
OutputDebugStringA("无效句柄");
}
break;
case IDM_EXIT:
DestroyWindow(hWnd);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
}
break;
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
// TODO: 在此处添加使用 hdc 的任何绘图代码...
EndPaint(hWnd, &ps);
}
break;
case WM_CREATE:
CreateWindow(L"button", L"subwindow", WS_OVERLAPPED | WS_CHILD | WS_VISIBLE, 400, 400, 100, 100, hWnd, NULL, hInst, NULL);
break;
case WM_DESTROY:
//if (wmId == g_SubWindowID)
// DestroyWindow(g_hSubWindow);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
2020年03月24日 03点03分 1
level 8
你这是一个什么控件?按钮控件可以添加这个参数,别的不清楚了
2020年03月25日 08点03分 2
这不是控件,Windows API
2020年10月06日 06点10分
@baisai Windows api就是控件制的呀
2020年10月06日 06点10分
@baisai 子窗口可以是各种控件,也可以是独立的新窗口
2020年10月06日 06点10分
子控件不能有WS_CAPTION | WS_SYSMENU | WS_POPUP 窗口样式
2022年06月30日 05点06分
1