5ボタンマウス設定を追加しようとして、SetWindowsHookExや
WndProcのoverrideを試していたのだが上手くいかず(※)。
そのまま放置してたんだが、TApplicationEventsを使えば楽に出来ることが判明。
Application.OnMessageでも可。
const WM_XBUTTONDOWN = $020B; WM_XBUTTONUP = $020C; WM_XBUTTONDBLCLK = $020D; XBUTTON1 = $0001; XBUTTON2 = $0002; procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin case Msg.message of WM_XBUTTONUP: begin if ( HIWORD(Msg.wParam) = XBUTTON1 ) then begin s_DebugMsg('ApplicationEvents1Message:XBUTTON1'); end else if ( HIWORD(Msg.wParam) = XBUTTON2 ) then begin s_DebugMsg('ApplicationEvents1Message:XBUTTON2'); end; end; end; end;
※
SetWindowsHookExはLPMSLLHOOKSTRUCTのmouseDataでXBUTTON1,2が正常に取れず。
WndProcの方はXBUTTON1,2は正常にとれるが、他のオブジェクト(パネル等)の上だと、サブクラス化しないとダメ。