首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectInput SetDataFormat误差

DirectInput SetDataFormat误差
EN

Stack Overflow用户
提问于 2014-04-09 05:18:36
回答 1查看 765关注 0票数 0

我想写一个与操纵杆交互的程序。我正在使用标准SDK示例和dinput8.lib。

这是密码。GUID取自enumJoysticksCallback函数。我把所有的东西都扔掉,尽量减少出错的机会。

代码语言:javascript
复制
LPDIRECTINPUT8          g_pDI = NULL;
LPDIRECTINPUTDEVICE8    g_pJoystick = NULL;

HRESULT hr = DirectInput8Create ( GetModuleHandle( NULL ), DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&g_pDI, NULL );

    GUID  *GUID_Saitek = new _GUID ;
    GUID_Saitek->Data1 = 0xA00DBD70;
    GUID_Saitek->Data2 = 0x7FB5;
    GUID_Saitek->Data3 = 0x11E3;
    char tmp[8] = { 0x80, 0x3, 0x44, 0x45, 0x53, 0x54, 0x0, 0x0 };
    memcpy(GUID_Saitek->Data4, tmp, 8);

    g_pDI->CreateDevice( *GUID_Saitek, &g_pJoystick, NULL );
    hr = g_pJoystick->SetDataFormat( &c_dfDIJoystick2 ) ;

程序在此字符串上失败。

代码语言:javascript
复制
hr = g_pJoystick->SetDataFormat( &c_dfDIJoystick2 );

hr返回0x80070216,这似乎是ERROR_ARITHMETIC_OVERFLOW。

&c_dfDIJoystick而不是&c_dfDIJoystick2也无济于事。

对老鼠来说是一样的。

代码语言:javascript
复制
LPDIRECTINPUT8          di = NULL;
LPDIRECTINPUTDEVICE8    Mouse = NULL;
HRESULT hr = DirectInput8Create(GetModuleHandle( NULL ),  DIRECTINPUT_VERSION, IID_IDirectInput8,  (VOID**)&di, NULL);
hr = di->CreateDevice( GUID_SysMouse, &Mouse, NULL );
hr = Mouse->SetDataFormat( &c_dfDIMouse ) ;

hr再次返回0x80070216,示例应用程序"Joystick.exe“工作正常。

GetCapabilities返回一些肯定不正确的随机内容

  • Embarcadero RAD Studio XE5 5/Borland CPP Builder 6(两者的结果相同)
  • DirectInput Saitek舵踏板/Saitek X52控制器(均为碰撞程序)
  • 32位应用程序
  • 标准SDK示例"Joystick“

怎么啦?错误不匹配任何与directinput相关的内容。设备的创建没有错误,但是任何与它的工作都会导致错误。

谢谢!

更新: SetCooperativeLevel函数返回0x80070006,即ERROR_INVALID_HANDLE

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-10 15:05:03

最后我发现了问题所在。它在这里撒谎:&c_dfDIJoystick2

由于某些原因,微软附加了预定义的结构,不匹配任何一个。即使是&c_dfDIMouse也不匹配我的简单3按钮鼠标。答案是另一个示例代码“自定义格式”。您必须为每个设备创建一个新的格式结构,因为即使是EnumObjects函数也不能为您提供新的格式结构,这使得DirectInput非常不方便。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22953393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档