GetParent() <- wo gebe ich an welches Fenster das Parent ist?
-
Also ich habe das mit GetWindowLong mal probiert und es funzt.
Ich würde tozdem gerne wissen woran es bei GetParent hängt
-
Das hast du schon selbst beantwortet, GetParent funktioniert nur bei Childs.
-
Also ich entnehme mal deiner Antwort das das nur mit WS_CHILD funktioniert. Oder nicht
-
flammenvogel schrieb:
Also ich entnehme mal deiner Antwort das das nur mit WS_CHILD funktioniert. Oder nicht
Das gibt man gewöhnlicherweise ja bei Childs auch an

-
@Flenders: man könnte aber nach der Beschreibung von hwndParent vermuten, das alle Fenster die hier nicht NULL bei CreateWindow übergeben bekommen Childs sind ...
(Da wo es Eltern sind auch Kinder sind ...)
-
-
flammenvogel schrieb:
@Flenders: man könnte aber nach der Beschreibung von hwndParent vermuten, das alle Fenster die hier nicht NULL bei CreateWindow übergeben bekommen Childs sind ...
(Da wo es Eltern sind auch Kinder sind ...)
Mann soll ja auch nicht meinen, man sollte in der MSDN schauen, den da stehts geschrieben.
*F: Was ist den MSDN?
A: Die Bibel der Windows-Programmierer
F: Aha, und was für eine Religion haben die?
A: WinAPI?
F: Bohr, haben die auch Kirchen oder so?
A: Ja, http://c-plusplus.net
F: Kannte ich alles gar nicht, zahlen die auch Kirchensteuer dafür oder so?
A: Nein, nur Onlinegebühren
*
-
@MichaM: Deinen letzten Beitrag kann ich nun wirklich nicht nachvollziehen. Wenn man sich das was zu GetParent in der MSDN steht mal durchließt, steht da in etwa folgendes:
Liefert entweder das Parent oder den Owner zurück. Wenn bei CreateWindow in der MSDN ein Parameter hwndParent heißt, dann kann man doch meinen das dies das HWND ist auf das sich GetParent bezieht.

edit: selbst in dem Link von owner steht das die MSDN in diesem Punkt scheiße ist und geschlampt hat.
-
PSDK Help schrieb:
The GetParent function retrieves the handle of the specified child window's parent window.
Schau dir auch mal SetParent() an, damit kannst du das Parent für Popup, Overlapped und natürlich Child Windows setzten.
wenn du bei createwindow den parent angiebts, aber es kein child ist, haut es nicht hin. im endefeckt sind alle "normalen" Fenster dem Desktop untergeordnet, möchtest du eine hierarchy der Fenster, so setzt du das mit SetParent.
Bei normalen Anwendungen bzw. Fenstern ist das aber nicht üblich und auch nicht sicher, bei mdi anwendungen schon ehr.wenn du mit vielen Fenstern arbeitest und du stehts den Parent erfragen willst/muß, dann köntest du auch eine map verwenden
#include <map> //..... static std::map <HWND, HWND> PHandleMap; void mapSetParent(HWND,HWND); HWND mapGetParent(HWND); //... void mapSetParent(HWND myHandle, HWND ParentHandle) { PHandleMap[myHandle] = ParentHandle; } HWND mapGetParent(HWND myHandle) { return PHandleMap[myHandle]; }mit map´s lassen sich viele sachen einfach und sicher verwalten.
Und wenn es nun wirklich viele Fenster sind, solltest du eine Klasse für Fenster erstellen, beim erstellen einer Instance dieser Klasse kann der this zeiger in einer map gespeichert werden, beim aufruf einer gemeinsamen, static WndProc kann man den this zeiger wieder auslesen und zum Klassennamen casten.
Vorteil ist OO, in der WndProc kannst du dann die Messages bearbeiten und entsprechende Events der Klasse aufrufen, wie z.B. OnKeyDown.
-
Das steht im Plattform SDK nicht in der MSDN ...