c++在关闭子窗口后无法打开它
c++ not able to open child window after closing it
我的子窗口有一些问题。我使用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);
为什么我只能打开孩子的窗户一次?
感谢
DestroyWindow
完全破坏了窗口。在那次通话之后,它就不复存在了。所以你不能用ShowWindow
再次显示它——你必须从头开始重新创建它。
与其调用DestroyWindow
来隐藏它,不如使用ShowWindow(chwnd, SW_HIDE);
在恢复最小化(或关闭)窗口时,需要在ShowWindow
调用中使用标志SW_RESTORE
。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 由于无效的 ValidateRgn() 子窗口不会收到WM_PAINT消息