У меня проблемы с окном моего ребенка. Я использую кнопку из 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);
Тебе нужен флаг SW_RESTORE
в вашем ShowWindow
вызов при восстановлении свернутого (или закрытого) окна.