基于XInput的罗技手柄编程

本文介绍了如何使用XInput库进行罗技手柄编程,通过读取手柄控制bool型变量实现程序与手柄的交互,关闭程序时能平滑退出,确保线程安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击这里下载源代码


2011年8月4日 17:11:29

准备工作:
1.在http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 下载DirectX SDK,并安装(C:\Program Files\Microsoft DirectX SDK).
2.VS中VC++ Include目录加入,C:\Program Files\Microsoft DirectX SDK\Include,libs目录中加入,C:\Program Files\Microsoft DirectX SDK\Lib\x86.
3.程序中加入XInput.h头文件以及XInput.lib
#include <XInput.h>
#pragma comment(lib, "XInput.lib").




正常使用该程序手柄设定(仅在罗技手柄F710做过测试):DX键拨到X,MODE灯灭掉,VIBRATION打开(按下时震动时间较长即为打开),该程序只能对一个手柄进行操作,但修改后可对最多4个手柄进行操作.
1.按下Initialize Joystick按键,测试是否能够读取到手柄数据来测试是否有手柄连接,若有手柄连接,则开启读取手柄数据线程,并且enable震动手柄按键.
2.在读取手柄数据线程中,读取tigger以及thumbstick控制量数据并输出到对应控件中,若某一按键被按下,对应的button也会enable.
3.当按下vibrate button,手柄会高速震动,直到关闭程序或者stop vibration.

4.当关闭程序时,读取手柄控制bool型变量为false,使得读取手柄数据线程终止,等待读取手柄数据线程终止后程序退出.

// Joystick_Test1Dlg.h : 头文件
//

#pragma once
// #############################################################################
// #############################################################################
#include <XInput.h>
#include "afxwin.h"
#pragma comment(lib, "XInput.lib")
// #############################################################################
// #############################################################################


// CJoystick_Test1Dlg 对话框
class CJoystick_Test1Dlg : public CDialog
{
// 构造
public:
	CJoystick_Test1Dlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_JOYSTICK_TEST1_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP(
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值