Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Änderung des Handles abfangen
Heiko - Mi 11.08.10 00:05
Titel: Änderung des Handles abfangen
Hallo,
ich habe eine Klasse von TWinControl abgeleitet. Da ich dort immer wieder mit dem Handle arbeite, muss ich wissen, wann sich das Handle ändert. Wie bekomme ich heraus, wann das aktuelle Handle ungültig wird, und wann ein neues verfügbar ist.
Hintergrund ist der, dass bei SetParent das Handle sich von dem Objekt und den meisten Unterobjekten ändert.
Besten Dank im Voraus
Heiko
BenBE - Mi 11.08.10 04:58
IIRC gab's da zwei Methoden AllocWnd und ReleaseWnd, die für die Handle-Verwaltung verwendet werden. Müssas aber noch mal im VCL-Source nachschlagen ...
Alternativ kannst Du schauen, inwiefern Du (da die VCL IIRC das RefCnted hat) verhinderst, dass das Handle freigegeben wird, da dies für SetParent eigentlich nicht nötig ist.
Heiko - Mi 11.08.10 14:45
CreateHandle bzw. DestroyHandle wäre die korrekte Antwort gewesen ;). CreateWnd wird nur einmal aufgerufen beim erzeugen des Objektes, danach scheinbar gar nicht mehr. Und DestroyWnd wird irgendwie auch nicht aufgerufen.
Jetzt habe ich aber das Problem, dass mein Desktutor 2x aufgerufen wird, wenn sich der parent zwischendurch ändert *grübel*.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TDemoForm.FormCreate(Sender: TObject); begin SunFlow := TSunFlow.Create(self); SunFlow.Parent := self; end;
procedure TDemoForm.ButtonClick(Sender: TObject); begin SunFlow.Parent := Form2; end;
procedure TDemoForm.FormDestroy(Sender: TObject); begin SunFlow.Free; end; |
BenBE - Mi 11.08.10 16:55
Ich erwähnte doch, dass ich auch noch mal konkret in den VCL-Source schauen müsste.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!