我的子窗口出现问题。我使用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);

10-04 15:02