![]() |
Window-Procedure und Objektinstanzen
Guten Tag,
Ist es möglich eine Window-Procedure, die ja von Windows aufgerufen wird eine Objektinstanz zu erreichen? Bisher habe ich die WindowProcedure als Methode implementiert und den ersten Parameter (hWnd) über
Delphi-Quellcode:
geholt.
HWND(Self)
Nun kann man natürlich nicht mehr auf die Variablen der Instanz zugreifen. Ich hatte nun die Idee eine Liste als Klassenvariable einzuführen, in die sich jede Instanz einträgt. So kann man in einer Schleife die Handles der Objekte in dere Liste durchsuchen und hat somit die Instanz, mit der ich die Methoden aufrufen kann. Gibt es vielleicht eine bessere Lösung? |
AW: Window-Procedure und Objektinstanzen
Selber würde ich nicht versuchen da ranzukommen, da Delphi diese Verknüpfungsinformation (WindowsControl > DelphiControl) eher dynamisch versteckt ablegt ... falls die daran mal was ändern.
Delphi-Quellcode:
Aus der Unit Controls.
function IsVCLControl(Handle: HWND): Boolean;
function FindControl(Handle: HWND): TWinControl; FindControl gibt aber auch direkt NIL zurück, wenn es kein VCLControl ist. Die VCL hängt die VCL-Objekt-Instanz als Atom ans WinControl und eventuell kann man auch versuchen über SendMessage+RM_GetObjectInstance die Instanz zu erhalten. Klappt natürlich nur in der eigenen Anwendung, da man ja das fremde Atom und die MessageID nicht unbedingt kennt (was man aber eventuell dennoch rausbekommen kann). |
AW: Window-Procedure und Objektinstanzen
Das geht leider nicht, da das Objekt von TObject abgeleitet ist - also ohne VCL. Denn alle VCL-Controls brauchen ein VCL-Parent.
Ich brauche aber ein Message-Only-Fenster mit dem Parent HWND_MESSAGE. Trotzdem Danke!:thumb: [Edit] Den Code dazu hab ich von dir, thx. [/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz