すでに一般的になって久しい多ボタン多機能マウス。
ビジネス用途での浸透率はいまいちなのだが、家庭ではほとんどのパソコン利用者が使っているのではないだろうか?
最近、仕事でメニューアプリを作成している。そのメニューはウィンドウズアプリなのであるが、WEBサイトのリンクのように実行形式ファイルなどのオブジェクトに関連づけされているもの、次のメニューに関連づけされているものなど様々な登録が可能になっている。他のメニューに関連づけられたボタンをクリックした際にはそのメニューが展開されるのだが、一つ前のメニューに戻る機能を持ったボタンを画面上に配置していた。
それを見たお客さんが…「マウスの戻るボタンへの対応」を聞いてきた…。
Delphiの標準機能には当然無いのでたぶんメッセージを受け取ってるのだろうと当たりを付けて調べる。Spy++を動かすのも良かったが、面倒なのでGoogle検索すると、C#のコーディング例などが載っていた。
Delphiでも1件そのままのコードがあった。
こんな感じ
type TForm1 = class(TForm) private procedure WMAppCommand(var Msg: TMessage); message WM_APPCOMMAND; end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } uses AppCommand; procedure TForm1.WMAppCommand(var Msg: TMessage); begin case GET_APPCOMMAND_LPARAM(Msg.LParam) of APPCOMMAND_BROWSER_FORWARD: begin ShowMessage('FORWARD'); Msg.Result := 1; end; APPCOMMAND_BROWSER_BACKWARD: begin ShowMessage('BACKWARD'); Msg.Result := 1; end; end; end;
参考というか、そのまんま答えが下記のページにあった。Delphi で進むと戻るマウス ボタンのイベントを検出するには?