by hira » 2005年12月08日(木) 18:22
Ver 2では使えますが、Ver 3以降では使えません。
Ver 3以降で使う場合は、WindowsのAPIなどの力を借りて強引に実装するしかないでしょう。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
#N88BASIC
Dim lpPrevWndProc As VoidPtr
Function MouseProc(hWnd As HWND,dwMsg As DWord,wParam As WPARAM,lParam As LPARAM) As LRESULT
Select Case dwMsg
Case WM_MOUSEMOVE
Case WM_LBUTTONDOWN
MsgBox 0,"test"
Case WM_RBUTTONDOWN
Case WM_LBUTTONUP
Case WM_RBUTTONUP
Case Else
MouseProc=CallWindowProc(lpPrevWndProc,hWnd,dwMsg,wParam,lParam)
End Select
End Function
lpPrevWndProc=SetWindowLong(_PromptSys_hWnd,GWL_WNDPROC,AddressOf(MouseProc))
'メインのコードここから
Sleep(5000)
'メインのコードここまで
SetWindowLong(_PromptSys_hWnd,GWL_WNDPROC,lpPrevWndProc)
この例では、起動してから5秒間まではマウスの左ボタンが押された時にメッセージを表示します(5秒を過ぎると押してもメッセージは出ません)。
マウス移動は「Case WM_MOUSEMOVE」の下、左ダウンは「Case WM_LBUTTONDOWN」の下、右ダウンは「Case WM_RBUTTONDOWN」の下、左アップはCase WM_LBUTTONUP」の下、右アップは「Case WM_RBUTTONUP」の下にそれぞれ記述してください。
なお、指定先の行番号に飛ぶ…といったことはこの方法ではできません。ただし、やりたいことを指定箇所に記述することで代用できることがあります。
※難しすぎたかもしれませんが…(^^;
Ver 2では使えますが、Ver 3以降では使えません。
Ver 3以降で使う場合は、WindowsのAPIなどの力を借りて強引に実装するしかないでしょう。
[hide][code]#N88BASIC
Dim lpPrevWndProc As VoidPtr
Function MouseProc(hWnd As HWND,dwMsg As DWord,wParam As WPARAM,lParam As LPARAM) As LRESULT
Select Case dwMsg
Case WM_MOUSEMOVE
Case WM_LBUTTONDOWN
MsgBox 0,"test"
Case WM_RBUTTONDOWN
Case WM_LBUTTONUP
Case WM_RBUTTONUP
Case Else
MouseProc=CallWindowProc(lpPrevWndProc,hWnd,dwMsg,wParam,lParam)
End Select
End Function
lpPrevWndProc=SetWindowLong(_PromptSys_hWnd,GWL_WNDPROC,AddressOf(MouseProc))
'メインのコードここから
Sleep(5000)
'メインのコードここまで
SetWindowLong(_PromptSys_hWnd,GWL_WNDPROC,lpPrevWndProc)[/code][/hide]
この例では、起動してから5秒間まではマウスの左ボタンが押された時にメッセージを表示します(5秒を過ぎると押してもメッセージは出ません)。
マウス移動は「Case WM_MOUSEMOVE」の下、左ダウンは「Case WM_LBUTTONDOWN」の下、右ダウンは「Case WM_RBUTTONDOWN」の下、左アップはCase WM_LBUTTONUP」の下、右アップは「Case WM_RBUTTONUP」の下にそれぞれ記述してください。
なお、指定先の行番号に飛ぶ…といったことはこの方法ではできません。ただし、やりたいことを指定箇所に記述することで代用できることがあります。
※難しすぎたかもしれませんが…(^^;