source: trunk/bin/SubOperation/dx/dx_input.sbp@ 306

Last change on this file since 306 was 187, checked in by dai, 18 years ago

AB本体のバイナリを登録

File size: 2.4 KB
Line 
1'このファイルには、DirectInputをCOMインターフェイスレベルで扱うための関数が定義されています。
2
3
4'-------------------------------------------------
5' DirectInputに必要なヘッダファイルをインクルード
6'-------------------------------------------------
7#include <directx9\dinput.sbp>
8
9
10Dim dx_lpDI As LPDIRECTINPUT8 'DirectInputインターフェイス
11
12'DirectMusicを初期化する関数
13Function dx_InitDInput() As Long
14 Dim hr As DWord
15
16 hr=DirectInput8Create(GetModuleHandle(0), DIRECTINPUT_VERSION, IID_IDirectInput8,
17 VarPtr(dx_lpDI), NULL )
18
19 If hr=S_OK Then dx_InitDInput=TRUE Else dx_InitDInput=FALSE
20End Function
21
22' DirectMusicを終了するための関数
23Sub dx_QuitDInput()
24 If dx_lpDI Then dx_lpDI->Release()
25End Sub
26
27
28'----------------
29' クラス
30'----------------
31
32Class CInputKeyboard
33 lpDIDevice As LPDIRECTINPUTDEVICE8
34Public
35 Sub CInputKeyboard()
36 'デバイスを生成
37 dx_lpDI->CreateDevice(GUID_SysKeyboard,VarPtr(lpDIDevice),NULL)
38
39 'データ形式を設定
40 lpDIDevice->SetDataFormat(VarPtr(c_dfDIKeyboard))
41
42 '操作レベルを設定
43 lpDIDevice->SetCooperativeLevel(hMainWnd, DISCL_FOREGROUND or DISCL_NONEXCLUSIVE)
44
45 'アクセス権の取得
46 lpDIDevice->Acquire()
47 End Sub
48
49 Sub ~CInputKeyboard()
50 'アクセス権を放棄
51 lpDIDevice->Unacquire()
52
53 'デバイスを閉じる
54 lpDIDevice->Release()
55 End Sub
56
57 'キーボードの状態を取得する関数(pKeyStateは256個のByte領域を持つ配列へのポインタ)
58 Function GetState(pKeyState As *Char) As Long
59 Dim hr As DWord
60 hr=lpDIDevice->GetDeviceState(256,pKeyState)
61 If hr=S_OK Then GetState=TRUE Else GetState=FALSE
62 End Function
63End Class
64
65Class CInputMouse
66 lpDIDevice As LPDIRECTINPUTDEVICE8
67Public
68 Sub CInputMouse()
69 'デバイスを生成
70 dx_lpDI->CreateDevice(GUID_SysMouse,VarPtr(lpDIDevice),NULL)
71
72 'データ形式を設定
73 lpDIDevice->SetDataFormat(VarPtr(c_dfDIMouse))
74
75 '操作レベルを設定
76 lpDIDevice->SetCooperativeLevel(hMainWnd, DISCL_FOREGROUND or DISCL_NONEXCLUSIVE)
77
78 'アクセス権の取得
79 lpDIDevice->Acquire()
80 End Sub
81
82 Sub ~CInputMouse()
83 'アクセス権を放棄
84 lpDIDevice->Unacquire()
85
86 'デバイスを閉じる
87 lpDIDevice->Release()
88 End Sub
89
90 'キーボードの状態を取得する関数(pKeyStateは256個のByte領域を持つ配列へのポインタ)
91 Function GetState(pMouseState As *DIMOUSESTATE) As Long
92 Dim hr As DWord
93 hr=lpDIDevice->GetDeviceState(SizeOf(DIMOUSESTATE),pMouseState)
94 If hr=S_OK Then GetState=TRUE Else GetState=FALSE
95 End Function
96End Class
Note: See TracBrowser for help on using the repository browser.