childfenster geht nicht mehr auf warum ?

cyberds19

Grünschnabel
ich lege 2 fenster an:
hwndMain=CreateWindow("hauptfenster","hauptfenster",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,300,200,NULL,NULL,hInstance,NULL);

hwndChild=CreateWindow("Childtest",
"Childtest",WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,300,600,NULL,NULL,hInstance,NULL);

ShowWindow(hwndMain,nCmdShow);
UpdateWindow(hwndMain);

ShowWindow(hwndChild,SW_HIDE);
UpdateWindow(hwndChild);

wähle ich jetzt meinen menupunkt geht das hwndchild mit
ShowWindow(hwndChild,SW_SHOW);
UpdateWindow(hwndChild);

auf. wenn ich es mit dem x schließe und dann per menü wieder öffnen will, wird es nicht mehr angezeigt warum ?
 

jokey2

Erfahrenes Mitglied
Da das Fenster auf diesem Weg geschlossen wird und nicht nur versteckt. Wenn Du das verhindern willst, solltest Du die OnClose-Methode überschreiben. Dort rufst Du dann nicht die OnClose-Methode der Basisklasse auf, sondern ShowWindoe(SW_HIDE). Du solltest aber beim Schließen des Hauptfensters nicht vergessen, das Kindfenster ebenfalls zu schließen (mit DestroyWindow()).
 
Zuletzt bearbeitet:

cyberds19

Grünschnabel
momentan schließe ich das fenster so:

LRESULT CALLBACK ChildProc(HWND hwnd,UINT iMsg,WPARAM wParam,LPARAM lParam){
HDC hdc;
PAINTSTRUCT ps;
RECT rect;

string a;
char *b;
int i=0;

switch(iMsg){
case WM_CREATE:

break;
case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
GetClientRect(hwnd,&rect);

EndPaint(hwnd,&ps);
break;
case WM_DESTROY:
DestroyWindow(hwnd);
break;
}
return DefWindowProc(hwnd,iMsg,wParam,lParam);
}

nachdem das fenster aber zerstört ist, kann mans mit showwindow nicht mehr öffnen.
wie mache ich das in meinem fall, dass das fenster nur versteckt wird ?
folgendes geht nicht:

case WM_DESTROY:
ShowWindow(hwnd,SW_HIDE);
break;