Ich hatte da mal ein wenig gelesen und probiert, es aber dann irgendwann verworfen. Viel Ahnung habe ich von den Internas nicht wirklich, aber ich kann dir aber mal kurz meine Gedanken dazu mitteilen.
Generell scheinen mehrere Leute ein Interesse an einem Ereignis Control.OnMessage zu haben (lt. Suchmaschine). Dieses hatte ich auch erfolgreich implementiert. Ich konnte zwar (alle) Messages damit auswerten, die Durchleitung an die Controls ohne bedenkliche Nebenerscheinungen nicht unterbinden.
Dazu hatte ich einfach eine Exception in der Procedure TMyCheckBox.WndProc(var Message: TLMessage); geworfen, das Programm mit GDB gestartet und mir den Stacktrace mal angeschaut, um einen Ansatzpunkt zu finden:
Code: Alles auswählen
Stack trace:
$004247F5 TMYCHECKBOX__WNDPROC, line 72 of unit1.pas
$00533FF9 DELIVERMESSAGE, line 112 of lclmessageglue.pas
$004C95C7 TWINDOWPROCHELPER__DOWINDOWPROC, line 2443 of ./win32/win32callback.inc
$004C9C5B WINDOWPROC, line 2608 of ./win32/win32callback.inc
$772E62FA
$772E6D3A
$772E77C4
$772E788A
$004CA8A6 TWIN32WIDGETSET__APPPROCESSMESSAGES, line 367 of ./win32/win32object.inc
$00421ABD TAPPLICATION__HANDLEMESSAGE, line 1260 of ./include/application.inc
$00421EDE TAPPLICATION__RUNLOOP, line 1395 of ./include/application.inc
$00424A40 TWIDGETSET__APPRUN, line 54 of ./include/interfacebase.inc
$00421E8E TAPPLICATION__RUN, line 1383 of ./include/application.inc
$00402C30 main, line 19 of project1.lpr
Mein Ansatzpunkt war DELIVERMESSAGE, da es imho von allen Widgetsets aufgerufen wird und damit platformunabhängig wäre. Dazu hatte ich ein property OnMessage dem TControl zugefügt und im DELIVERMESSAGE gefeuert. Möglicherweise ist dies aber schon zu spät und man müsste das Ereignis tatsächlich in den Widgetsets unterbringen?!
Wie gesagt, der Ansatz war nicht zielführend, evtl. hilft es dir ja aber als Gedankenanstoß. Die meisten Beiträge beziehen sich darauf, die Messages nur auszuwerten, nicht diese auch zu verwerfen oder nicht ausgewertete Messages einzufangen. Siehe z.B.:
http://wiki.lazarus.freepascal.org/Win3 ... our_window
Evtl. könnte dir jemand von der
Mailing-List mehr helfen?!
Oder teste solange (den Code hast du ja vorliegen) bis du eine hieb- und stichfeste Lösung hast und teile sie (im Bugtracker)
