AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WindowProc, WMPaint ist das doppelt gemoppelt?
Thema durchsuchen
Ansicht
Themen-Optionen

WindowProc, WMPaint ist das doppelt gemoppelt?

Ein Thema von Leuselator · begonnen am 27. Aug 2003 · letzter Beitrag vom 27. Aug 2003
 
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#1

WindowProc, WMPaint ist das doppelt gemoppelt?

  Alt 27. Aug 2003, 08:18
Der Datenbankheini im Message-Dschungel

Ich habe vor kurzem schonmal meine Fähigkeit zur totalen Verwirrung hier dargestellt.

@Lucky vorab: Ich habe Deine Tutorials gelesen, aber noch nicht wirklich durchgeholt. Besonders verwirrt mich, aus der reinen VCL-Ecke kommend, die Vermischung von API und VCL. Das wird wohl noch ein Weilchen dauern bis es vergeht.

Also hätte ich da so eine Komponente, die an eine andere vom Typ TWinControl gekoppelt ist. Um das Aussehen der Beiden beeinflussen zu können und in den Zeichenprozess eingreifen zu können, habe ich mir den Typ
TLsWndProc = procedure(var Message: TMessage) of object; gebastelt und die Komponente hat u.a. diese Variablen und Prozeduren:
Delphi-Quellcode:
FOriginalWndProc : TLsWndProc;
procedure SetControl(Value: TWincontrol);
procedure MyWndProc(Var Message : TMessage);
procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
wenn ich sie an diese ankoppel, rufe ich SetControl auf, merke mir dort die WindowProc des TWincontrol und biege sie anschließend auf meine Procedur um:
Delphi-Quellcode:
FOriginalWndProc := TWincontrol(FControl).WindowProc
TWincontrol(FControl).WindowProc := MyWndProc;
so weit, so schön. Ich dachte mir MyWndProc für die (Draw-relevanten)Nachrichten des gekaperten TWincontrols und WMPaint für meine eigenen Malereien.

Als mir nun einfiel, es wäre schön, auf den Erhalt des Focus durch meine gekaperte TWincontrol zu reagieren, wollte ich mich auf gleiche Weise der Ereignisse OnEnter und On Exit bemächtigen. Nun stellte ich fest, dass die in TWinControl noch nicht public sind, wühlte ein wenig im VCL-Code und fing an zu grübeln:

1. kommen diese Nachrichten (OnEnter/OnExit bzw. CM_ENTER/CM_EXIT) nicht schon in der WindowProc des gekaperten TWinControl an? Kann ich schon dort darauf reagieren (z.B.Einblenden meiner Komponente)?

2. Liege ich mit der Trennung WMPaint/WindowProc richtig, oder kommen in MyWndProc Aufgrund der Deklaration auch meine eigenen Ereignisse vorbeigehuscht?

3. Gibt meine Konfusion diesbezüglich Anlass her, ein Tutorial über VCL/API oder API-Light zu basteln? Wenn ja, würde ich gern bei dessen Aufbau helfen.
Tim Leuschner
  Mit Zitat antworten Zitat
 


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 18:36 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