AGB  ·  Datenschutz  ·  Impressum  







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

Eigener Messagehandler

Ein Thema von EWeiss · begonnen am 31. Jan 2009 · letzter Beitrag vom 31. Jan 2009
 
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Eigener Messagehandler

  Alt 31. Jan 2009, 19:09
Zitat von sx2008:
Zitat von EWeiss:
Was macht das für einen sinn.
War aber auch nicht die Frage
Nun die Sinnfrage könnte ich auch stellen. Was macht es für einen Sinn, für eine nonVCL Listbox
Events bereitzustellen, wenn es nicht einmal ein Formular gibt, dass die Eventhandler implementiert?
Zitat von EWeiss:
Also wie kann ich ohne WinProc oder Subclassing einen DefaultHandler für
eine nonvcl ListBox erstellen.
Duschen, ohne sich nass zu machen geht nicht.
Du musst entweder WinProc für jede einzelne Listbox auf eine eigene Funktion umbiegen.
oder
du hast eine allgemeine WinProc für alle Listboxen.
Mit SetWindowLong(lbhandle,GWL_USERDATA, (ListBoxObject)) kann man einen Zeiger auf ein Objekt in der Listbox speichern.
In der allgemeinen WinProc für alle Listboxen liest man mit GetWindowLong die Userdaten aus und castet den Wert in einen Zeiger auf die Listbox-Hilfsklasse:
Delphi-Quellcode:
function WindowProcListbox(hwnd:Handle; uMsg:TMsg; wParam, lParam:Cardinal):integer;
var
  lb : TnonVCLListbox;
begin
  lb := TnonVCLListbox(GetWindowLong(hwnd, GWL_USERDATA));
  if Assigned(lb) then
  begin
    lb.Handle := hwnd;
    Result := lb.WinProc(uMsg, wParam, lParam);
  end
  else
  begin
    // default-Bahandlung, falls kein Objekt in den Userdaten ist
  end;
end
;
Da nun alle Messages auf ein Objekt umgeleitet worden sind, kann man theoretisch von diesem Objekt auch Events auslösen.
Aber es macht wenig Sinn, denn es ist einfacher gleich eine Klasse von TnonVCLListbox abzuleiten, die dann die speziellen Aufgaben für eine ganz bestimmte Listbox übernimmt.
Mein anliegen war wie in einer Standard Form einen defaultHandler zu generieren auf dem die ListBox reagiert.
Ich habe meine ListBox gesubclassed das ist nicht mein problem.

Irgendwie drücke ich mich nicht richtig aus oder werde nicht verstanden.

gruss Emil
  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 23:09 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