In der Win32-Programmierung, was ist der Unterschied zwischen einem Elternteil eines Fensters und einem Besitzer des Fensters? Ich dachte, ich hätte es herausgefunden, dann kam ich auf diesen Code:Win32 Fenster Besitzer vs Fenster Eltern?
SetWindowLong(handle, GWL_HWNDPARENT, foo);
Dies ist eigentlich das Fenster der Eigentümer setzt, nicht die Eltern - trotz der GWL_HWNDPARENT verwendet wird. Sind die Begriffe Eltern/Besitzer austauschbar, oder gibt es tatsächlich einen Unterschied?
Danke für das Fenster vs Fenster Tipp - manchmal diese Dinge ein wenig verwirrend, wenn Sie mit anderen Leuten zu diskutieren versuchen. –
Dies ist nicht korrekt. Ein Fenster kann einen Elternteil oder einen Besitzer haben, aber nicht beides. –
Raymond, ich denke, ein Teil der Verwirrung ist, dass Spy ++ und GetAncestor (GA_PARENT) ein 'nächstes Fenster eine Ebene höher im HWND-Baum' zurückgeben werden, sogar für HWNDs auf höchster Ebene, also umgangssprachlich, haben sie ein 'Elternteil', auch wenn es intern nicht so verfolgt wird. Es gibt grundsätzlich zwei Möglichkeiten, den HWND-Baum zu betrachten. die naive Ansicht "Single Tree Rooted on Desktop", die Sie mit Spy ++/GetAncestor/EnumChildWindows/GetWindow (GA_FIRST/NEXT) sehen, und dann die Ansicht "Internals-oriented", bei der jeder HWND einen einzigen Slot hat, der Eltern oder Besitzer ist auf WS_CHILD. – BrendanMcK