[Delphi] 多機能マウス対応

すでに一般的になって久しい多ボタン多機能マウス。
ビジネス用途での浸透率はいまいちなのだが、家庭ではほとんどのパソコン利用者が使っているのではないだろうか?

最近、仕事でメニューアプリを作成している。そのメニューはウィンドウズアプリなのであるが、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 で進むと戻るマウス ボタンのイベントを検出するには?

コメント (1件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0077