Einzelnen Beitrag anzeigen

tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Frame schluckt WM_KEYDOWN-Message

  Alt 6. Sep 2005, 08:00
Hab noch mal ein wenig weiter damit experimentiert.

Das Frame schluckt nicht nur Keyboard messages, sondern auch z.B. eine WM_LBUTTONDOWN und andere Mouse-Messages.

Daraufhin hab ich dem ganzen jetzt einen eigenen Eventhandler für WM_KEYUP und WM_KEYDOWN verpasst (protected Methoden KeyUp und KeyDown überschrieben), und zack, es klappt. Meistens. Denn wenn ich die Tasten Pfeiltaste hoch oder Pfeiltaste runter drücke, springt er gar nicht in die Methode rein. Bei anderen Tasten aber schon. Und Windows feuert definitiv eine Message ab (das habe ich nachgesehen).

Und jetzt der Clou:
Ich habe ein TApplicationEvents auf mein Form gepackt und in OnMessage diesen Code geschrieben:
Delphi-Quellcode:
if Msg.message = WM_KEYDOWN then
  SendMessage(Frame1.Handle, WM_KEYDOWN, VK_UP, 0);
Jetzt springt er dann tatsächlich in den entsprechenden Eventhandler. Obwohl ich ja nichts gemacht hab, als einfach nochmal eine Message zu senden.

Warum macht er das?!?! Was ist denn daran jetzt anders, wenn ich selbst eine Message verschick als wenn Windows das macht? Und warum ignoriert er das WM_KEYDOWN nur bei bestimmten Parametern in der Message-Struktur.
Christian
Der Computer hilft mir, Probleme zu lösen, die ich ohne Computer nicht hätte.
  Mit Zitat antworten Zitat