![]() |
Re: Windows Message in einer Klasse
So hab es jetzt hinbekommen, ich habe auf die falsche Windows-Message gelauscht. Die Windows_Message "WM_INPUTLANGCHANGE" geht immer an das Fenster welches den Fokus hat, aber Button und andere Steuerelemente sind für das Betriebssystem auch Fenster, daher hat immer der Button die Nachricht bekommen. Man muß auf WM_INPUTLANGCHANGEREQUEST lauscht diese Botschaft geht an die Anwendung die den Fokus hat.
|
Re: Windows Message in einer Klasse
Ich habe versucht das Ergebnis, des Dialoges zwischen Euch
nachzustellen, funktioniert nur wenn kein Button etc. auf der Form liegt. Kann mir jemand sagen was noch verkehrt ist? Gruß Uwe
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TSprache = class(TWinControl) private public procedure KeyboardChange(var Message: TMessage);message WM_INPUTLANGCHANGEREQUEST; end; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } Sprache: TSprache; procedure WndProc(var Message : TMessage);override; end; var Form1: TForm1; implementation {$R *.dfm} procedure TSprache.KeyboardChange(var Message: TMessage); begin Showmessage('OK' ); end; procedure TForm1.WndProc(var Message : TMessage); begin if Message.Msg = WM_INPUTLANGCHANGEREQUEST then begin Sprache.KeyboardChange(Message); end; inherited wndproc(Message); end; procedure TForm1.FormCreate(Sender: TObject); begin Sprache := TSprache.Create(Form1); Sprache.Parent := Form1; end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 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 by Thomas Breitkreuz