jjzjj

DirectInput8

全部标签

windows - DirectInput 模拟摇杆范围

我使用DirectInput来处理输入设备,我枚举设备和每个设备上的元素。在我的游戏handle上使用模拟摇杆时,它们会报告0-65535范围内的值。对于所有类型的绝对轴,总是都是这种情况吗?如果不是:是否有任何方法可以找出DX8输入元素的DIDEVICEOBJECTDATA::dwData(用DIDFT_ABSAXIS枚举)的范围?我能想到的唯一其他选择是在我的应用程序中使用一些自制的内部校准,这听起来太像80年代了,不可能是真的。 最佳答案 您不能使用GetProperty获取范围并传入要填充的适当DIPROPRANGE结构吗?

c++ - 查明 DirectInput 设备是否支持 XInput(使用 mingw/gcc)

我正在开发一个输入系统,包装DirectInput和XInput。目前XInput设备被枚举两次,一次作为XInput,一次作为DirectInput(因为它们都支持)。如何确定给定的DirectInput设备是否也支持XInput?有thisMSDNpage关于这个主题,但它需要wbemidl.h和wmsstd.h,它们在mingw/gcc中不可用(并且出于某种原因我想避免使用msvc-可能是出于习惯)。我不认为将设备名称/guid列入黑名单是一个好的解决方案,但有更好的解决方案吗?谢谢。 最佳答案 wbemidl.h和所有相关的

c# - 在 DirectInput 应用程序中使用 SendInput API 模拟键盘

我正在尝试为自定义游戏Controller应用程序模拟键盘命令。因为我需要在DirectInput环境中模拟命令,所以大多数常用方法都不起作用。我知道使用Hook100%有效,但我正在努力寻找更简单的实现方式。我进行了大量搜索,发现通过将SendInputAPI与扫描码一起使用而不是虚拟键应该可以工作,但它似乎表现得像键的“粘着”。我已经发送了KEYDOWN和KEYUP事件,但是当我尝试在DirectInput环境中发送消息时,游戏的行为就像按键被按住一样。例如,如果我模拟一个“W”按键并在第一人称射击游戏中将该键映射到“向前移动”Action,一旦我进入游戏,下面的函数将导致角色向前

c++ win32 使用 DirectInput 模拟按键

如何使用DirectInput模拟按键?我目前有初始化(但我不确定它是否好):#include#pragmacomment(lib,"dinput8.lib")#pragmacomment(lib,"dxguid.lib")LPDIRECTINPUT8din;//thepointertoourDirectInputinterfaceLPDIRECTINPUTDEVICE8dinkeyboard;//thepointertothekeyboarddeviceBYTEkeystate[256];//thestorageforthekey-informationvoidinitDInput(

c++ - DirectInput8 EnumDevices 有时慢得令人痛苦

有时(在大约50%的运行中),EnumDevices需要5-10秒才能返回。通常它几乎是即时的。我找不到关于此类行为的任何其他报告。当事情变得如此缓慢时,可以通过观察stdout来分析:)这:std::coutEnumDevices(DI8DEVCLASS_GAMECTRL,MyCallback,NULL,DIEDFL_ATTACHEDONLY);std::cout似乎通过枚举设备卡在一个随机点-有时会在调用回调之前,有时会在调用回调之后,有时会在最后一次调用回调之后。这显然是一段简化的代码;我实际上使用的是OIS输入库(http://sourceforge.net/projects/

c++ - 插入操纵杆后使用 DirectInput 接收信号

我有一个C++程序,它在程序开始时枚举所有输入设备(使用直接输入)。如果程序启动,然后我插入另一个Controller,则在程序重新启动之前不会识别该Controller。有人知道我可以使用的事件会导致我的程序在插入新设备后枚举所有设备吗? 最佳答案 Thisarticle讨论如何检测游戏handle的变化。首先,您可以处理WM_DEVICECHANGE消息并检查wParam是否有DBT_DEVICEARRIVAL或DBT_DEVICEREMOVECOMPLETE。不过,为了将这些作为WPARAM接收,您似乎需要调用Register

c++ - 为什么我的 DirectInput8 堆栈会溢出?

整体程序过于复杂,无法在此展示。基本上,只需注意greenhighlightsinmyrecentgitcommit.我是DirectInput的新手,所以我预计我犯了几个错误。我已经非常仔细地研究了MSDN文档,所以我保证我不会把它丢在那里并在上面标记FIXITFORME。:)基本上,我想我已经将我的问题缩小到Engine::getEvent周围的代码区域(第238+行)。我不明白这些功能是如何工作的,我搞砸了某些部分以获得不同的结果。我的目标是直接读取键盘事件并将这些原始数字输出到屏幕(稍后我将处理数字的含义)。这里的问题与KEYBOARD_BUFFER_SIZE有关。如果我把它变

c++ - 我应该使用 DirectInput 还是 Windows 消息循环?

我正在开发C++DirectX2D游戏,我需要键盘和鼠标输入。维基百科说:MicrosoftrecommendsthatnewapplicationsmakeuseoftheWindowsmessageloopforkeyboardandmouseinputinsteadofDirectInput那我应该怎么用呢?我有一个GameScreen类负责绘图和更新(游戏逻辑),我在Windows消息循环中调用Draw和Update方法。谢谢 最佳答案 由于您几乎必须运行消息泵才能拥有一个窗口,因此您也可以使用该泵来处理键盘和鼠标输入。是否