AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

In WndProc Handle ermitteln - ohne Self

Ein Thema von mischerr · begonnen am 25. Aug 2007 · letzter Beitrag vom 25. Aug 2007
Antwort Antwort
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#1

In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 14:13
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
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 14:34
Self.Handle ? (Ich neheme an, dass alle Controls die eine WindowProc haben, stammen von TWinControl, daher müssen sie auch ein Handle haben.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 15:09
Jain... Ich hab doch oben geschrieben, dass Self nicht funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 18:36
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 18:47
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:
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;
So in etwa läuft das, wenn ich mischerr richtig versteh.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: In WndProc Handle ermitteln - ohne Self

  Alt 25. Aug 2007, 19:13
@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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz