![]() |
WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
Also wie kann ich WM_APPCOMMAND so behandeln, dass ich nicht einfach alle Messages abfange, sondern nur die, die ich wirklich benötige und die anderen völlig unberührt bleiben, so als ob mein prog keinen Focus hätte??
meine Frage bezieht sich auf den Thread: ![]() Ja ich weiß, dass mein Vorgehen mit den Threads unbeliebt ist aber ich weiß mir nichtmehr anders zu helfen. Doku spuckt mir auch nicht das aus, was ich brauche. Und alle anderen Threads beziehen sich nur dazu, wie man WM_APPCOMMAND's überhaupt nutzen kann. Schonmal hoffentlich Big THX im Vorraus und nochmals Thx für das Verständnis! mfg. chri_ri |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
Hast du das hier beachtet?
Zitat:
|
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
hm also soll ich in dem case bei else einfach result := false oder so ähnlich zurück geben, damit es ignoriert wird von meinem tool?
mfg. chri_ri |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
Also das will irgendwie so nicht funktionieren:
Delphi-Quellcode:
Die Funktionen in meinem Tool funktionierten zwar wieder wunderbar aber irgendwie werden die nicht benötigten nicht weitergereicht.
procedure TMain.MultiKey(var Msg: TMessage);
begin case Msg.lParam of $B0000: if radio <> 3 then Switch(radio + 1); $C0000: if radio <> 0 then Switch(radio - 1); $D0000: if btn_play.Caption = 'II' then btn_play.Click; $E0000: btn_play.Click; else begin Msg.Result := 0; end; end; end; Was mache ich falsch? Und sorry für den Push. Erstmal thx! mfg. chri_ri |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
und die defwindowproc vielleicht noch aufrufen (im else)
|
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
@sirius:
Erstmal Thx, aber wie benutze ich das? so:?
Delphi-Quellcode:
Hab jetzt übrigens meinen code ein wenig geände (Den Message-Typ und im Case von wparam zu lparam):
else Msg.Result := DefWindowProc(0, msg.Msg, msg.WParam, msg.LParam);
Delphi-Quellcode:
Bin noch relativ Neuling auf dem Gebiet der Messages.
procedure TMain.MultiKey(var Msg: TMessage);
begin case Msg.lParam of $B0000: if radio <> 3 then Switch(radio + 1); $C0000: if radio <> 0 then Switch(radio - 1); $D0000: if btn_play.Caption = 'II' then btn_play.Click; $E0000: btn_play.Click; else Msg.Result := DefWindowProc(0, msg.Msg, msg.WParam, msg.LParam); end; end; mfg. chri_ri |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
anstatt 0 nimmst du self.handle.
Edit: Als Alternative kannst du auch mal versuchen die Methode DefaultHandler (der VCL) aufzurufen. |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
Zitat:
|
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
Geil Danke, ihr seid die besten!^^ Ich weiß schon, warum ich in diesem Forum poste^^
Also habe jetzt beide Varianten probiert. inherited und self.handle geht^^ Wie immer ist die einfachste die beste Lösung XD Naja ich denke sowieso imma bissl kompliziert XD Also hier nochmal die komplette Lösung für alle, die eventuell selber mal sowas benötigen:
Delphi-Quellcode:
type
TMain = class(TForm) procedure MultiKey(var Msg: TMessage); message WM_APPCOMMAND; private { Private declarations } public { Public declarations } end; procedure TMain.MultiKey(var Msg: TMessage); begin case Msg.lParam of $B0000: if radio <> 3 then Switch(radio + 1); $C0000: if radio <> 0 then Switch(radio - 1); $D0000: if btn_play.Caption = 'II' then btn_play.Click; $E0000: btn_play.Click; else begin inherited; // oder Msg.Result := DefWindowProc(self.Handle, msg.Msg, msg.WParam, msg.LParam); end; end; end; mfg. chri_ri |
Re: WM_APPCOMMAND - Nur benötigte Commandos abfangen?!
:gruebel: bei mir (D7) gibt es keine inhertied Methode mit WM_APPCommand, aber wenn es funktioniert....
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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