第1部分 DirectInput原理 3
第1章 DirectInput基础 3
1.1 DirectInput的层次结构 3
1.1.1 DirectInput层次结构概述 3
1.1.2 DirectInput与Windows集成 5
1.1.3 人机接口设备 6
1.2 DirectInput的创建 6
1.2.1 创建DirectInput 6
1.2.2 DirectInput设备枚举 6
第2章 DirectInput设备 9
2.1 设备的设置 9
2.2 创建DirectInput对象 9
2.3 设备性能 11
2.4 协作级别 12
2.4.1 前台和后台 13
2.4.2 独占级与非独占级 14
2.5 设备对象枚举 14
2.6 设备数据格式 16
2.7 设备特性 17
2.8 获得设备 20
2.9 识别设备的变化 21
第3章 DirectInput设备数据基本概念 23
3.1 缓冲数据和立即数据 23
3.2 时间印章和序列号 25
3.3 轮询和事件 26
3.4 相对轴坐标和绝对轴坐标 27
3.5 输出数据 27
4.1 立即鼠标数据 30
第4章 鼠标数据 30
4.2 缓冲鼠标数据 31
4.3 解释鼠标轴数据 33
4.4 检查丢失的鼠标输入 34
第5章 键盘数据 35
5.1 立即键盘数据 35
5.2 缓冲键盘数据 36
5.3 解释键盘数据 37
5.4 检查丢失的键盘输入 38
第6章 游戏杆数据 39
6.1 立即游戏杆的数据 39
6.2 缓冲游戏杆的数据 40
6.3 游戏杆的轴数据 42
6.4 检查游戏杆状态 44
7.1 反馈的基本概念 45
第7章 力反馈 45
7.2 效果枚举 47
7.3 装载一个文件中的效果 49
7.4 有关被支持效果的信息 50
7.5 创建一种效果 51
7.6 效果的方向 53
7.7 包络和偏移量 56
7.8 效果重现 57
7.9 下载和卸载效果 58
7.10 修改效果 59
7.11 增益 60
7.12 力反馈状态 61
7.14 效果类型 62
7.13 枚举效果对象 62
7.14.1 常力 63
7.14.2 斜坡力 64
7.14.3 周期效果 65
7.14.4 状况 67
7.14.5 定制力 69
7.14.6 设备特定的效果 70
第8章 DirectInput For C/C++应用举例 72
8.1 使用键盘 72
8.1.1 步骤1:创建DirectInput对象 73
8.1.2 步骤2:创建DirectInput键盘设备 73
8.1.3 步骤3:设置键盘数据格式 74
8.1.4 步骤4:设置键盘特性 74
8.1.5 步骤5:获得使用键盘的权利 74
8.1.6 步骤6:从键盘检索数据 75
8.1.7 步骤7:关闭DirectInput系统 76
8.1.8 示例函数1:DI_Init 76
8.1.9 示例函数2:DI_Term 77
8.2 使用鼠标 78
8.2.1 步骤1:创建鼠标设备 78
8.2.2 步骤2:设置鼠标数据格式 79
8.2.3 步骤3:设置鼠标特性 79
8.2.4 步骤4:为鼠标的缓冲输入做准备 79
8.2.5 步骤5:管理对鼠标的访问 81
8.2.6 步骤6:从鼠标检索被缓冲的数据 82
8.3 使用游戏杆 92
8.3.1 步骤1:枚举游戏杆 92
8.3.2 步骤2:创建DirectInput游戏杆设备 93
8.3.4 步骤4:设置游戏杆特性 94
8.3.3 步骤3:设置游戏杆数据格式 94
8.3.5 步骤5:获得使用游戏杆的权利 96
8.3.6 步骤6:从游戏杆检索数据 97
8.4 使用力反馈 98
8.4.1 步骤1:枚举力反馈设备 99
8.4.2 步骤2:创建DirectInput力反馈设备 99
8.4.3 步骤3:枚举被支持的效果 101
8.4.4 步骤4:创建一种效果 102
8.4.5 步骤5:操纵一种效果 103
8.4.6 步骤6:改变效果 104
第9章 DirectInput For Visual Basic应用举例 105
9.1 使用键盘 105
9.1.1 步骤1:创建DirectInput和键盘设备 105
9.1.3 步骤3:获得使用键盘的权利 106
9.1.2 步骤2:设置键盘参数 106
9.1.4 步骤4:从键盘检索立即数据 107
9.2 使用鼠标 112
9.2.1 步骤1:设置鼠标 112
9.2.2 步骤2:设置通知 113
9.2.3 步骤3:管理对鼠标的独占管理 113
9.2.4 步骤4:检索缓冲数据 114
9.3 使用游戏杆 118
9.3.1 步骤1:枚举和创建游戏杆 118
9.3.2 步骤2:获得游戏杆性能 119
9.3.3 步骤3:设置游戏杆属性 121
9.3.4 步骤4:从游戏杆检索立即数据 122
9.4 使用力反馈设备 127
9.4.1 步骤1:初始化力反馈设备 128
9.4.2 步骤2:设置设备属性 129
9.4.3 步骤3:创建一种效果 129
9.4.4 步骤4:修改效果 130
第2部分 DirectInput应用程序设计接口 147
第10章 DirectInput For C/C++接口 147
10.1 COM接口 147
10.1.1 IDirectInput7接口 147
10.1.2 IDirectInputDevice7接口 154
10.1.3 IDirectInputEffect接口 184
10.2 函数 193
10.2.1 DirectInputCreate函数 194
10.2.2 DirectInputCreateEx函数 195
10.3 回调函数 196
10.3.1 DIEnumCreatedEffectObjectsCallback 197
10.3.2 DIEnumDeviceObjectsCallback 197
10.3.3 DIEnumDevicesCallback 198
10.3.4 DIEnumEffectsCallback 198
10.3.5 DIEnumEffectsInFileCallback 198
10.4 宏 199
10.4.1 DIDFT_GETINSTANCE 199
10.4.2 DIDFT_GETTYPE 200
10.4.3 DIDFT_MAKEINSTANCE 200
10.4.4 DIEFT_GETTYPE 200
10.4.5 DIMAKEUSAGEDWORD 201
10.4.6 DISEQUENCE_COMPARE 201
10.4.8 GET_DIDEVICE_TYPE 202
10.5 数据结构 202
10.4.7 GET_DIDEVICE_SUBTYPE 202
10.5.1 DICONDITION结构 203
10.5.2 DICONSTANTFORCE结构 205
10.5.3 DICUSTOMFORCE结构 205
10.5.4 DIDATAFORMAT结构 206
10.5.5 DIDEVCAPS结构 208
10.5.6 DIDEVICEINSTANCE结构 210
10.5.7 DIDEVICEOBJECTDATA结构 213
10.5.8 DIDEVICEOBJECTINSTANCE结构 214
10.5.9 DIEFFECT结构 217
10.5.10 DIEFFECTINFO结构 220
10.5.11 DIEFFESCAPE结构 222
10.5.12 DIENVELOPE结构 223
10.5.14 DIJOYSTATE结构 224
10.5.13 DIFILEEFFECT结构 224
10.5.15 DIJOYSTATE2结构 225
10.5.16 DIMOUSESTATE结构 228
10.5.17 DIMOUSESTATE2结构 229
10.5.18 DIOBJECTDATAFORMAT结构 230
10.5.19 DIPERIODIC结构 232
10.5.20 DIPROPDWORD结构 233
10.5.21 DIPROPGUIDANDPATH结构 234
10.5.22 DIPROPHEADER结构 234
10.5.23 DIPROPRANGE结构 235
10.5.24 DIPROPSTRING结构 236
10.5.25 DIRAMPFORCE结构 237
10.6 设备常量 237
10.6.1 键盘设备常量 238
10.6.2 鼠标设备常量 243
10.6.3 游戏杆设备常量 244
10.7 返回值 245
第11章 DirectInput For Visual Basic参考 249
11.1 类 249
11.1.1 DirectInput类 249
11.1.2 DirectInputDevice类 252
11.1.3 DirectInputDeviceInstance类 273
11.1.4 DirectInputDeviceObjectInstance类 279
11.1.5 DirectInputEffect类 284
11.1.6 DirectInputEnumDeviceObjects类 290
11.1.7 DirectInputEnumDevices类 291
11.1.8 DirectInputEnumEffects类 292
11.2 数据类型 295
11.2.1 DICONDITION类型 296
11.2.2 DICONSTANTFORCE类型 297
11.2.3 DIDATAFORMAT类型 297
11.2.4 DIDEVCAPS类型 298
11.2.5 DIDEVICEOBJECTDATA类型 299
11.2.6 DIEFFECT类型 300
11.2.7 DIENVELOPE类型 302
11.2.8 DIJOYSTATE类型 302
11.2.9 DIJOYSTATE2类型 304
11.2.10 DIKEYBOARDSTATE类型 306
11.2.11 DIMOUSESTATE类型 306
11.2.12 DIOBJECTDATAFORMAT类型 307
11.2.13 DIPERIODICFORCE类型 308
11.2.14 DIPROPLONG类型 309
11.2.15 DIPROPRANGE类型 310
11.2.16 DIRAMPFORCE类型 311
11.3 枚举类型 311
11.3.1 CONST_DICOMMONDATAFORMATS枚举类型 312
11.3.2 CONST_DICONDITIONFLAGS枚举类型 312
11.3.3 CONST_DIDATAFORMATFLAGS枚举类型 313
11.3.4 CONST_DIDEVCAPSFLAGS枚举类型 313
11.3.5 CONST_DIDEVICEOBJINSTANCEFLAGS枚举类型 315
11.3.6 CONST_DIDEVICETYPE枚举类型 316
11.3.7 CONST_DIDFTFLAGS枚举类型 318
11.3.8 CONST_DIDGDDFLAGS枚举类型 320
11.3.9 CONST_DIEFFFLAGS枚举类型 320
11.3.10 CONST_DIEFTFLAGS枚举类型 320
11.3.13 CONST_DIEPFLAGS枚举类型 322
11.3.12 CONST_DIENUMDEVICESFLAGS枚举类型 322
11.3.11 CONST_DIEGESFLAGS枚举类型 322
11.3.14 CONST_DIESFLAGS枚举类型 324
11.3.15 CONST_DIGFFSFLAGS枚举类型 324
11.3.16 CONST_DIJOYSTICKOFS枚举类型 325
11.3.17 CONST_DIKEYFLAGS枚举类型 327
11.3.18 CONST_DIMOUSEOFS枚举类型 327
11.3.19 CONST_DINPUT枚举类型 327
11.3.20 CONST_DINPUTERR枚举类型 328
11.3.21 CONST_DIPHFLAGS枚举类型 328
11.3.22 CONST_DISCLFLAGS枚举类型 329
11.3.23 CONST_DISDDFLAGS枚举类型 329
11.3.24 CONST_DISFFCFLAGS枚举类型 330
11.4 键盘设备常量 331
11.5 错误码 334