![]() |
In WndProc Handle ermitteln - ohne Self
Hallo!
Ich habe das Problem, dass ich mich in die WindowProc mehrerer Controls einklinke, indem ich diese in meiner Klasse registriere, dann pro Control meine eingene WindowProc ausführe und dann ggf. die original WindowProc des Controls (zB ein Button). Wenn nun mehrere Controls registriert sind, brauche ich in meiner WndProc eine Identifizierung des Controls dessen WindowProc gerade bearbeitet wird. Ideal wäre das Handle, welches aber leider nicht in der Message übergeben wird. Hat jemand eine Idee wie ich an das Handle des aufrufenden Controls komme? Self geht dabei leider nicht, da es auf meine eigene Klasse zeigt. Michael |
Re: In WndProc Handle ermitteln - ohne Self
Self.Handle ? (Ich neheme an, dass alle Controls die eine WindowProc haben, stammen von TWinControl, daher müssen sie auch ein Handle haben.
|
Re: In WndProc Handle ermitteln - ohne Self
Jain... Ich hab doch oben geschrieben, dass Self nicht funktioniert.
|
Re: In WndProc Handle ermitteln - ohne Self
Also ist es eine Klasse von TWinControl abgeleitet, dann funktioniert auch Self.Handle. Ansonstn wird in der nomael Windows Fenserprozedur als erster Parameter das Fensterhandle mitgeliefert.
|
Re: In WndProc Handle ermitteln - ohne Self
hm. du hast eine klasse, die für verschiedene controls windowprocs bereitstellt. hrm, hrm, hrm. WinAPI-callbacks haben meistens tag-parameter für sowas...
Um das klarzustellen:
Delphi-Quellcode:
So in etwa läuft das, wenn ich mischerr richtig versteh.
type
TMessageInterceptor = class procedure WindowProc(Message: TMessage); procedure AddControl(Control: TWinControl); ... end; procedure TMessageInterceptor.AddControl(Control: TWinControl); begin OldProcs.Add(Control.WindowProc); Control.WindowProc := WindowProc; end; |
Re: In WndProc Handle ermitteln - ohne Self
@DGL-Luke: Exakt!
Und somit ist leider in der neuen WindowProc das Handle des auslösenden Controls nicht mehr ermittelbar, falls mehrere mehrere Controls "gehookt" sind. Oder gibt's eine Weg nachträglich an die DefWindowsProc heranzukommen welche bei CreateParams gesetzt wird? Hier gibt's als ersten Parameter das Handle... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 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