这一节是一个实现Microsoft DirectX的向导,包含以下内容:
创建DirectInput
DirectInput设备枚举
更详细的内容,参见“理解DirectInput”。
相关的信息,参见:
DirectInput设备
DirectInput设备数据
Action映射
力反馈
创建DirectInput
任何Microsoft DirectInput应用程序的第一步就是获取IDirectInput8接口。可以简单的调用DirectInput8Create函数来实现。
你可以创建单一一个DirectInput对象,直到应用程序终止再释放它。
DirectInput设备枚举
DirectInput可以查询系统所有的输入设备,决定他们是否已经连接,随后返回关于他们的信息。这个过程叫做枚举。
如果你的应用程序仅使用了标准的键盘或鼠标,或者二者都有,那么你不需要作枚举。在Creating a DirectInput Device一节里会解释:在调用CreateDevice函数时你可以预定义全局变量来保存设备。
下面的代码例子中,lpdi是一个指向IDirectInput8接口的指针,利用它创建一个键盘设备:
LPDIRECTINPUTDEVICE8 lpdiKeyboard;
lpdi->CreateDevice(GUID_SysKeyboard, &lpdiKeyboard, NULL);
IDirectInput8::CreateDevice的第一个参数是一个用于识别创建的设备类型的实例GUID(Instance GUID)。Microsoft DirectInput有两个预定义的GUID:GUID_SysMouse 和GUID_SysKeyboard,分别表示系统鼠标和键盘。你可以传给IDirectInput8::CreateDevice函数两个参数之一。但是全局变量GUID_Joystick不可以传入,因为它是一个产品GUID(Product GUID),不是实例化的GUID(Instance GUID)。
备注:如果计算机安装有一个以上的鼠标,来自他们所有的输入将被组合构成系统设备。键盘也是如此。
DirectInput提供了其余4个预定义的GUID用于测试。
GUID_SysKeyboardEm
GUID_SysKeyboardEm2
GUID_SysMouseEm
GUID_SysMouseEm2
将他们传给IDirectInput8::CreateDevice函数后,函数将通过仿真层获得访问系统鼠标或者键盘的权限,level1或者是level2。这些GUID总是代表系统鼠标或者键盘。他们是GUID_SysKeyboard 和GUID_SysMouse的别名,因此他们不会被EnumDevices函数或者EnumDevicesBySemantics函数枚举,除非设置了DIEDFL_INCLUDEALIASES标志。
对于系统鼠标或者键盘以外的设备,使用的是被IDirectInput8::EnumDevices 或者IDirectInput8::EnumDevicesBySemantics实例化后返回的GUID。一个设备的实例GUID永远是同一个值。你可以允许用户从枚举的列表中选择一个设备,然后保存GUID到一个配置文件里,以便在以后的会话中重复利用。
2005年11月10日译, 不得用于商业用途。
outiejun@yeah.net
Using DirectInput - Microsoft DirectX 9.0 SDK Update (October 2005)
posted on 2005-11-10 10:03
outiejun 阅读(1544)
评论(2) 编辑 收藏 引用 所属分类:
DirectX9翻译-DirectInput