DxInput的使用
来源:互联网 发布:淘宝steam充值 编辑:程序博客网 时间:2024/06/16 16:55
今天搞了一天的DxInput,晚上总结下:
1.创建DirectInput8对象。DirectInput8Create(
HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter);
LPDIRECTINPUT8 lpi;HRESULT hr;//创建directinput8对象hr = DirectInput8Create(hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&lpi, NULL);if (FAILED(hr)){return FALSE;}
2.创建DirectInput设备。
hr = lpi->CreateDevice(GUID_SysKeyboard, &m_keyboard, NULL);if (FAILED(hr)){return FALSE;}其中m_keyboard为LPDIRECTINPUTDEVICE8;
3.设置设备的数据格式
hr = m_keyboard->SetDataFormat(&c_dfDIKeyboard);if (FAILED(hr)){return FALSE;}
这里面的参数是一个结构体,一般采用预定义的全局变量。
4.设置协作等级
hr = m_keyboard->SetCooperativeLevel(hwnd, DISCL_EXCLUSIVE | DISCL_FOREGROUND);if (hr == DIERR_UNSUPPORTED){MessageBox(hwnd, _T("不支持设置的协作等级"), _T("erro"), 0);return FALSE;}if (FAILED(hr)){MessageBox(hwnd, _T("设置协作等级失败"), _T("erro"), 0);return FALSE;}
本来我是想把它设为后台独占模式,但是我电脑不支持,所以只好把它设为前台模式了。
5.设置缓冲区
DIPROPDWORD dip;dip.diph.dwSize = sizeof(DIPROPDWORD);dip.diph.dwHeaderSize = sizeof(DIPROPHEADER);dip.diph.dwObj = 0;dip.diph.dwHow = DIPH_DEVICE;dip.dwData = 16;hr = m_keyboard->SetProperty(DIPROP_BUFFERSIZE, &dip.diph);if (FAILED(hr)){return FALSE;}
6.获取设备访问权
m_keyboard->Acquire();
然后就只需用GetDeviceState对数据进行检索。
- DxInput的使用
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- gulp的使用基本使用
- 如何判断两个矩形是否有重叠部分?(某公司校园招聘笔试试题)
- 【阅读笔记之六】《DIRECTX.9.0.3D游戏开发编程基础》:Direct3D中的颜色
- 关于C/C++中全局变量的初始化问题的深入思考
- 为什么要有Node.js -- 读《Node.js开发指南》有感
- iBATIS入门之二:实现增删改查、模糊查询、序列增长
- DxInput的使用
- open vswitch研究:utility
- 25.写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)
- 关于MyEclipse8.6的优化问题详解
- sscanf函数
- ogre3d在vs2010下的配置
- poj1144-tarjan求割点
- 20个公司绝对不会告诉你的潜规则
- Algorithm - 求最大公约数