win32 api DestroyWindow()

elfvyn

Mitglied
Welchen Grund kann es geben das sich ein Window mit
Code:
DestroyWindow(hWnd)
nicht beendet?
Habe überprüt ob der Handle stimmt mit
Code:
CloseWindow(hWnd)
Hierbei wird das Fenster wie gewünscht minimiert
Jedoch Destroyen kann ich es nicht....Die Funktion gibt mir als Fehlercode 0
If the function fails, the return value is zero
Wie kann das sein?
 
Hast du auch das:

Code:
Remarks

A thread cannot use DestroyWindow to destroy a window created by a different thread. 

If the window being destroyed is a child window that does not have the WS_EX_NOPARENTNOTIFY style, a WM_PARENTNOTIFY message is sent to the parent.

beachtet?

Und wie wärs mit :

Code:
If the function fails, the return value is zero. To get extended error information, call GetLastError.

was wird den bei GetLastError zurückgegeben?
 
Ein gern gemachter Fehler ist auch, dass das Fenster an sich weg ist, aber deine Messageschleife noch weiterläuft. Hast du im WM_DESTROY-Handler ein PostQuitMessage aufgerufen? Oder einen anderen Weg eingebaut, um die Messageschleife abzubrechen?
 
Hab nochmal die hilfe gelesen.... da steht ja das man ein Window außerhalb des eigenen Threads nicht beenden kann! Zählt denn ein anderes Fenster somit auch als anderer Thread denn ich hab die Funktion mal Testweise in die eigene Fensterroutine kopiert und da gehts..... Also ich bin das Problem jetzt umgangen indem ich eine eigene Message erzeuge die ich an das Fenster schicke in der dann das destroy steht.... Aber wie sieht das denn prinzipiell aus?
 
Von einem anderen Fenster aus geht das genauso, vorausgesetzt der aufrufende Code steht in demselben Thread!
Du musst nur das richtige HWND benutzen.
 
Zuletzt bearbeitet:
hmm dann ists komisch denn ich habe keine weiteren Thread gestartet.. und mein zB closeWindow() funktioniert ja auch selbst wenn ich beie hintereinander stelle also:
closeWindow(hWnd);
destroyWindow(hWnd);
minimiert er das fenster aber destroyt es nicht sondern beendet mit 0.
Hab auch mal den Fehlercode abgeholt... weiss jetzt aber nicht wied er Wert zu verstehen ist oder wo ich das nachschlagen kann ( wenn ich die DWORD Variable im DebugVariablenüberwachung anzeigen lasse steht da als Value 5)
 
Ah, wenn du keinen eigenen WM_CLOSE Handler hast, ist das Fenster danach schon zerstört.
Die DefWindowProc ruft auf WM_CLOSE hin auch DestroyWindow auf. Das HWND ist dann bei deinem DestroyWindow-Aufruf schon hin.

Vermute ich.

Einen hab ich noch: In welchem Verhältnis steht das eine Fenster zum anderen?
 
Zuletzt bearbeitet:
Zurück