如何通过DirectInput技术针对莱仕达雷驰V3II游戏方向盘编程
INT_PTR Joystick::runJoystick( HWND hDlg)
{ switch( this->msg )
{
case WM_INITDIALOG:
InitDirectInput( hDlg );
return TRUE; case WM_TIMER:
// Update the input device
UpdateInputState( hDlg);
return TRUE; case WM_DESTROY:
// Cleanup everything
FreeDirectInput();
return TRUE;
} return FALSE; // Message not handled
}
定时器中的UpdateInputState函数在设定的循环周期内将游戏方向盘中的数据抓取出来,代码如下:
HRESULT Joystick::UpdateInputState( HWND hDlg)
{
HRESULT hr;
TCHAR strText[] = {}; // Device state text
DIJOYSTATE2 js; // DInput Joystick state if( NULL == this->g_pJoystick )
return S_OK; // Poll the device to read the current state
hr = this->g_pJoystick->Poll();
if( FAILED( hr ) )
{
// DInput is telling us that the input stream has been
// interrupted. We aren't tracking any state between polls, so
// we don't have any special reset that needs to be done. We
// just re-acquire and try again.
hr = this->g_pJoystick->Acquire();
if( hr == DIERR_INPUTLOST )
{
this->g_pJoystick->Acquire();
return hr;
}
// hr may be DIERR_OTHERAPPHASPRIO or other errors. This
// may occur when the app is minimized or in the process of
// switching, so just try again later
return S_OK;
} // Get the input's device state
if( FAILED( hr = this->g_pJoystick->GetDeviceState( sizeof( DIJOYSTATE2 ), &js ) ) )
{
this->errorMSG = "Joystick connection lost";
this->msg = WM_DESTROY; //find a new joystick
return hr;
}
//Read values into Joystick object
this->setAxis(js.lX, js.lY, js.lZ, js.lRx, js.lRy, js.lRz, js.rglSlider[], js.rglSlider[]); this->setPOV(js.rgdwPOV[], js.rgdwPOV[], js.rgdwPOV[], js.rgdwPOV[]); for( int i = ; i < ; i++ )
{
if( js.rgbButtons[i] & 0x80 )
this->setButton(i,true);
else
this->setButton(i,false);
} this->errorMSG = "Reading Joystick OK";
return S_OK;
}
相关程序的Demo下载地址在这里。
如何通过DirectInput技术针对莱仕达雷驰V3II游戏方向盘编程的更多相关文章
- 如何通过XInput技术针对游戏方向盘或者手柄编程
目前市面上的游戏外设,要么支持传统的DirectInput接口,要么支持最新的XInput技术.今天在这里聊一聊,如何通过XInput技术实现对这类游戏外设相关信息的捕获.关于DirectInput与 ...
- socket技术详解(看清socket编程)
socket编程是网络常用的编程,我们通过在网络中创建socket关键字来实现网络间的通信,通过收集大量的资料,通过这一章节,充分的了解socket编程,文章用引用了大量大神的分析,加上自己的理解,做 ...
- 聚焦小游戏技术生态,腾讯游戏云GAME-TECH落地厦门
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯游戏云 发表于云+社区专栏 2018迎来了小游戏元年,据<2018年小游戏行业白皮书>显示:2018年小游戏市场规模预 ...
- 利用Docker技术实现UDP广播效果(网络编程python版)
docker的安装见官方文档 我使用的系统为Ubuntu16.04 Ubuntu系统安装docker文档地址:https://docs.docker.com/engine/installation/l ...
- JELLY技术周刊 Vol.15 云游戏会是 5G 杀手级应用么?
蒲公英 · JELLY技术周刊 Vol.15 听到"云游戏",或许我们的第一反应会是"云玩家"而不是那些上云的"游戏",在这个 5G 已来的 ...
- 屏幕坐标和世界坐标的转换+对象池技术(3D打地鼠小游戏)
游戏中可能经常会遇到需要某个物体跟着鼠标移动,然后又需要把物体放在某个鼠标指定的位置 实现方式 Camera.main.WorldToScreenPoint Camera.main.ScreenToW ...
- 【技术累积】【点】【编程】【13】XX式编程
(原)函数式编程 核心概念 函数式一等公民(输入输出啥的都可以是函数): 纯函数,固定输入带来固定输出: 阅读性良好,无并发问题,但效率偏低: 大历史背景 旨在描述问题如何计算: 有两位巨擘对问题的可 ...
- 针对某p社游戏某整合包的研究
软件分析 垃圾re手 最近在玩群星 创意工坊里面下载了整合包 进群下载排序文件后竟然发现要付费() 28R够吃一顿好的 马上来分析一下这个软件 这是一个四版整合包的mod安装器 其中樱花远征和新星纪元 ...
- Java都有什么进阶技术
Java都有什么进阶技术? 看到有人给题主推荐<代码整洁之道>,评论有人说那不是JAVA进阶的书- 私以为,一些人对JAVA进阶的理解片面了,JAVA不过也是一门语言,提升和进阶还是内 ...
随机推荐
- Django REST framework 数据处理api
一.url分发 以防有其他业务线的需要,导致url杂乱,将每个app用到的url都设置在自己的应用中. # 项目下的url url(r"^api/(?P<version>\w+) ...
- C#创建excel并释放资源
using System; using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; us ...
- mesh topology for airfoil, wing, blade, turbo
ref Ch. 5, Anderson, CFD the basics with applications numerical grid generation foundations and appl ...
- lombok 插件安装
1. 下载地址: https://plugins.jetbrains.com/plugin/6317-lombok-plugin 2. 选择从本地安装.
- android保存bitmap到sdcard
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { //判断sdcard是否存在和是否具有读写 ...
- 在设计DJANGO用户更改密码时,出现NoReverseMatch at /account/password-change/这种妖精如何办?
网上看到很多解决办法.但对于我来说, 好像加个post_change_redirect这个参数是最有效的. from django.conf.urls import url from . import ...
- hdu 1247 Hat’s Words(从给的单词中找hat's word 并按字典序输出)
1.在使用mp[key]的时候它会去找键值为key的项,假设没有,他会自己主动加入一个key的项,再把value赋值为对应的初始值(value是int的话赋值为0,string的话赋值为空).所以假设 ...
- PKU 3667 Hotel (线段树,区间合并,最长连续区间)
题意:宾馆有N个房间(1~N),M个操作,a=1,输入b,表示N间房是否有连续的b间房.有输出最左边的房编号 没有输出0.a=2,输入b,c表示房间b到c清空. 模仿了大神的代码,敲了一遍,有些地方还 ...
- JBoss AS6 的服务状态说明
(本文源码版本号为JBoss-AS-Final 6.1.0) JBoss 的服务状态定义在 LifecycleState 类中. 一共同拥有八个状态:INSTANCIATED, PRE_INIT, I ...
- Java推断和检查网络
在实践项目中.常常要处理网络异常等问题.为此,专门设计一个类,随时能够使用. import java.io.IOException; import java.net.InetAddress; impo ...