【发布时间】:2024-04-14 05:50:01
【问题描述】:
我的子窗口有一些问题。我使用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);
为什么我的子窗口只能打开一次?
谢谢
【问题讨论】:
-
这不是一个最小的例子。请不要让人们阅读大量不必要的代码。
-
对不起,我认为有必要看看我是如何创建我的窗口的。
-
我们想看看您是如何创建自己的窗口的。但是,很难相信需要所有六个孙窗口来证明问题。我打赌你可以删除它们。同样,我打赌您可以删除自定义绘制处理程序,问题仍然存在。继续删除代码,直到得到仍然能证明问题的最小程序。
-
现在你删除的太多了。您需要生成仍然可以演示问题的最小完整程序。您之前的尝试错过了要求的“最小”部分。您的第二次尝试错过了要求的“完整程序”部分。
-
对不起,我改了。
标签: c++ winapi window childwindow