posts - 1,  comments - 3,  trackbacks - 0

这一节是一个实现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 阅读(1545) 评论(2)  编辑 收藏 引用 所属分类: DirectX9翻译-DirectInput

FeedBack:
# re: (三)使用DirectInput
2009-10-09 19:30 | 张升
大侠,现在很多网游都限制了模拟鼠标键盘输入,不知道是不是游戏只接收DirectInput的输入信息,您有空能不能帮我做个突破这种限制的鼠标按键映射软件啊,我的游戏鼠是罗技的mx518,自带的按键映射在游戏里不好使,郁闷啊!
我的QQ408773227,打扰了  回复  更多评论
  
# re: (三)使用DirectInput
2012-07-30 15:32 |
翻译得很清楚啊。博主怎么不翻译多一些DX方面的文档呢?  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理




  • 除特别说明外均为原创,转贴请注明出处
  • 关注:DirectX Game Programming,Eclipse Plugin Dev/GEF/EMF,不过这里只谈Game:)
  • 邮箱:outiejun@yeah.net

  • 常用链接

    留言簿(1)

    随笔档案(1)

    文章分类(3)

    文章档案(3)

    游戏开发站

    搜索

    •  

    最新评论