我的孩子窗户遇到了一些问题。我使用AppendMenu
中的按钮打开它,但在我关闭子窗口后,我再也无法打开它了。
代码:
WNDCLASSEX chwincl;
chwincl.hInstance = hThisInstance;
chwincl.lpszClassName = "Child";
chwincl.lpfnWndProc = ChildProcedure;
chwincl.style = CS_DBLCLKS;
chwincl.cbSize = sizeof(WNDCLASSEX);
chwincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
chwincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
chwincl.hCursor = LoadCursor(NULL, IDC_ARROW);
chwincl.lpszMenuName = NULL;
chwincl.cbClsExtra = 0;
chwincl.cbWndExtra = 0;
chwincl.hbrBackground = (HBRUSH)(COLOR_BACKGROUND);
if (!RegisterClassEx(&chwincl))
return 2;
chwnd = CreateWindowEx(0,
"Child",
"Add...",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
300,
150,
HWND_DESKTOP,
NULL,
hThisInstance,
NULL);
我用这个打开子窗口:
if (LOWORD(wParam) == ID_Click) {
ShowWindow(chwnd, SW_SHOWDEFAULT);
UpdateWindow(chwnd);
}
我用它关闭它:
DestroyWindow(chwnd);
为什么我只能打开一次子窗口?
由于
答案 0 :(得分:1)
DestroyWindow
彻底摧毁了窗户。在那次通话之后,它不再存在。因此,您无法再使用ShowWindow
再次显示它 - 您必须从头开始重新创建它。
使用DestroyWindow
ShowWindow(chwnd, SW_HIDE);
来隐藏它
答案 1 :(得分:0)
恢复最小化(或关闭)窗口时,SW_RESTORE
调用中需要标记ShowWindow
。