投稿日 | : 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