投稿時間:2005/06/08(Wed) 15:17 投稿者名:ダンボ
URL :
タイトル:中央ボタンクリックのシミュレーション
マウスホイール取得の続編なのですが、ピクチャーボックスへのマウスホイール・イベントを 伝えるために、「Shif+Cntl+Altキーを押しながら中央ボタンをクリックした」イベントを シミュレーションしようと思っています。下記の試験用コードでPostMessageを出すと、 wMsgすなわちButton、とlParamすなわちXとY、は正しくPicture1_MouseDownに伝わりますが、 wParamに何をセットしても、Picture1_MouseDownではShift=0になってしまいます。 何がいけないんでしょうかね?
Private Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" _ (ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long
Private Const WM_MBUTTONDOWN = &H207 '中央のマウスボタンが押された Private Const MK_MBUTTON = &H10 'マウス中ボタン Private Const MK_SHIFT = &H4 'SHIFTキー Private Const MK_CONTROL = &H8 'CTRLキー Private Const MK_ALT = &H20 'ALTキー
Private Sub Command1_Click() Dim rc As Long, wMsg As Long, wParam As Long, lParam As Long wMsg = WM_MBUTTONDOWN 'simulate ' wParam = MK_SHIFT + MK_CONTROL + MK_ALT wParam = &HFFFFFFFF lParam = &H10002 rc = PostMessage(Picture1.hWnd, wMsg, wParam, lParam) End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Debug.Print Button, Shift, X, Y '--->実行結果は 4 0 30 15 End Sub
|