by konisi » 2006年6月30日(金) 17:39
えー、前言撤回。
いろいろ試してたらできました。
[ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function joySetCapture Lib "winmm.dll" _
(ByVal hwnd As Integer, _ 'メッセージを受取るウィンドウのハンドル
ByVal uID As Integer, _ 'joyスティックID
ByVal uPeriod As Integer, _ 'Polling frequency, in milliseconds
ByVal bChanged As Integer _ '1 --- by threshold 0 --- by uPeriod
) As Integer
Dim glwp As DWord
Dim lwp As DWord
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
If dwMsg = &H3A0 Then
'位置を表示させるためのプロシージャを呼び出す。
ShowPosition(LOWORD(lParam), HIWORD(lParam))
End If
If dwMsg = &H3A0 or dwMsg = &H3A2 Then
'ボタンを表示させるためのプロシージャを間接的に呼び出す。
glwp=wParam
End If
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
'JOY_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
'ジョイスティックの初期化(タイムアウト100ms)
joySetCapture(hMainWnd,0,100,0)
SetTimer(hMainWnd,1,1,AddressOf(ShowButton))
End Sub
'ジョイスティックの位置をテキストボックスに表示する。
Sub ShowPosition(xPos As Word, yPos As Word)
SetDlgItemText(hMainWnd,EditBox1,Str$(xPos))
SetDlgItemText(hMainWnd,EditBox2,Str$(yPos))
End Sub
Sub ShowButton()
If lwp<>glwp then
SetDlgItemText(hMainWnd,EditBox3,Str$(glwp))
lwp=glwp
End If
End Sub
とりあえず、ゲームパッド1のキーの状態が変化したらShowButton内のIf分岐で表示できるようにしてあります。
[hide=前言]文献はC言語ですが、参考になるかもしれません。今度ABに移植を試みます。
http://www.ics.t.u-tokyo.ac.jp/~harada/seminar/pdf/BoardMicro051115.pdf
http://www.ics.t.u-tokyo.ac.jp/~harada/seminar/sampleprog05/usbtargets051115.tar.gz
追記
移植してみたところ方法が悪かったのかまったく動きませんでした^^;
DirectXを使えば簡単に出来そうだと言うことがわかりました。(でも移植が面倒)[/hide]
えー、前言撤回。
いろいろ試してたらできました。
[hide][code]'-----------------------------------------------------------------------------
' イベント プロシージャ
'-----------------------------------------------------------------------------
' このファイルには、ウィンドウ [MainWnd] に関するイベントをコーディングします。
' ウィンドウ ハンドル: hMainWnd
' TODO: この位置にグローバルな変数、構造体、定数、関数を定義します。
Declare Function joySetCapture Lib "winmm.dll" _
(ByVal hwnd As Integer, _ 'メッセージを受取るウィンドウのハンドル
ByVal uID As Integer, _ 'joyスティックID
ByVal uPeriod As Integer, _ 'Polling frequency, in milliseconds
ByVal bChanged As Integer _ '1 --- by threshold 0 --- by uPeriod
) As Integer
Dim glwp As DWord
Dim lwp As DWord
'-----------------------------------------------------------------------------
' ウィンドウメッセージを処理するためのコールバック関数
Function MainWndProc(hWnd As DWord, dwMsg As DWord, wParam As DWord, lParam As DWord) As DWord
' TODO: この位置にウィンドウメッセージを処理するためのコードを記述します。
If dwMsg = &H3A0 Then
'位置を表示させるためのプロシージャを呼び出す。
ShowPosition(LOWORD(lParam), HIWORD(lParam))
End If
If dwMsg = &H3A0 or dwMsg = &H3A2 Then
'ボタンを表示させるためのプロシージャを間接的に呼び出す。
glwp=wParam
End If
' イベントプロシージャの呼び出しを行います。
MainWndProc=EventCall_MainWnd(hWnd,dwMsg,wParam,lParam)
End Function
'-----------------------------------------------------------------------------
' ここから下は、イベントプロシージャを記述するための領域になります。
Sub MainWnd_Destroy()
'JOY_DestroyObjects()
PostQuitMessage(0)
End Sub
Sub MainWnd_Create(ByRef CreateStruct As CREATESTRUCT)
'ジョイスティックの初期化(タイムアウト100ms)
joySetCapture(hMainWnd,0,100,0)
SetTimer(hMainWnd,1,1,AddressOf(ShowButton))
End Sub
'ジョイスティックの位置をテキストボックスに表示する。
Sub ShowPosition(xPos As Word, yPos As Word)
SetDlgItemText(hMainWnd,EditBox1,Str$(xPos))
SetDlgItemText(hMainWnd,EditBox2,Str$(yPos))
End Sub
Sub ShowButton()
If lwp<>glwp then
SetDlgItemText(hMainWnd,EditBox3,Str$(glwp))
lwp=glwp
End If
End Sub[/code][/hide]
とりあえず、ゲームパッド1のキーの状態が変化したらShowButton内のIf分岐で表示できるようにしてあります。