Fenster schließen & wieder öffnen
-
Hi
Ich hab ein Programm mit 2 Fenstern.
Wenn ich auf Fenster "A" auf einen Button Klicke, soll Fenster "B" angezeigt werden. In Fenster "B" wird dann etwas eingegeben, und wieder Geschlossen. Allerdings kann ich dann Fenster "B" Nicht ein 2. mal öffnen. (Erst, wenn ich das Ganze Programm neu Starte.Wie kann ich also Fenster "B" Schließen, damit ich es später nochmal öffnen kann??
Folgende 3 Möglcihkeiten hab ich schon ausprobiert, aber nix geht
//In WM_DESTROY: ShowWindow(hWnd_AddItem, SW_HIDE); DestroyWindow(hWnd_AddItem); PostQuitMessage(0);
-
nicht schliessen im sinne von zerstören. sondern nur verstecken

ShowWindow(hWnd_B, SW_HIDE);
-
GEHT NICHT!!
Hab ich schon versucht
... Aber egal was, es muss in WM_DESTROY, oder??
-
Hab ich evtl am Anfang schon was falsch??
//Fenster wird erstellt hWnd_additem = CreateWindow(szAppNameAI, "AddItem", WS_OVERLAPPEDWINDOW, 100, 120, 400, 195, NULL, NULL, hInstance, NULL); //Fenster wird geöffnet (Irgenwo in WM_COMMAND) ShowWindow(hWnd_additem, SW_NORMAL); UpdateWindow(hWnd_additem);
-
RedEagle schrieb:
... Aber egal was, es muss in WM_DESTROY, oder??
nein sonst müsstest du jedesmal wenn du ein neues fenster haben möchtest dieses erstellen.
RedEagle schrieb:
Hab ich evtl am Anfang schon was falsch??
vermutlich
1. alle fenster erstellen (register und createwindow, etc)
[vermutung] fenster b sollte keine x btn haben sondern wahrscheinlich nur
ok und abruch
2. fenster b hiden
3. fenster a anzeigen
4. fenster a btn click (WM_COMMAND)
5. showwindow fenster b
6. nach der aktion fenster wieder verstecken --> btn click auf ok --> showwindow
7. und wieder zu 4.
-
aha Prinzip verstanden, geht aber trotzdem nicht :(:(
Jetzt hab' ich's so://WinMain: ShowWindow(hWnd_additem, SW_HIDE); UpdateWindow(hWnd_additem); //Fenster "A" //WM_COMMAND case ID_ADDITEM: { ShowWindow(hWnd_additem, SW_NORMAL); break; } //Fentser "B": //WM_COMMAND case IDCANCEL: //Programm schließen ( [×] ) { ShowWindow(hWnd_AddItem, SW_HIDE); break; }Geht nicht :(:(
-
EDIT: Hab mich verguckt

-
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) switch (message) { case WM_COMMAND: { switch(LOWORD(wParam)) { case ID_IRGENDWAS: { //Mach irgendwas break; } } break; } }Aber daran kanns doch nicht liegen, oder??
[edit]
masterofx32 schrieb:
EDIT: Hab mich verguckt

...
[/edit]
-
ein click auf das x zerstört dein fenster.
entweder den button deativieren
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/WindowsUserInterface/Windowing/windows/WindowReference/WindowStyles.asp
oder auf dialogboxen umsteigen, IMHO besser.
-
Das [×] Kommt sowiso wech. (Mache "WS_CAPTION" und mehr nicht)
ABER: Wenn ich ShowWindow() bei WM_COMMAND benutze, bzw irgendeine Andere Funktion (um das Fenster zu schließen) außer PostQuitMessage(0); tut sich garnichtsbsp.:
case ID_ADD: { AddItem(); //Funktioniert ShowWindow(hWnd_AddItem, SW_HIDE); //Wird nicht ausgeführt, bzw Fenster bleibt sichtbar break; }
-
hmm, und woher hast du dein hWnd_AddItem?
-
masterofx32 schrieb:
hmm, und woher hast du dein hWnd_AddItem?
mmmm ... Wende so fragst

hWnd_AddItem = CreateWindow(szAppNameAI, szAppName, WS_OVERLAPPEDWINDOW, 100, 120, 400, 195, NULL, NULL, hInstance, NULL);ABER
LRESULT CALLBACK WndProc_AddItem(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)ok, damit Fehler gefunden & gelöst

DANKE