我用的是北通宙斯游戏手柄-白金

放几篇非常不错的文章

1.JoyStick游戏杆编程实践_32768的博客-CSDN博客_joystick

2.游戏手柄(JoyStick)编程学习笔记(1)_liyuanbhu的博客-CSDN博客

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>#include<Windows.h>//添加joystick操作api的支持库
#include<MMSystem.h>
#pragma comment(lib, "Winmm.lib")int main(int argc, char* argv[])
{JOYINFO joyinfo;//定义joystick信息结构体JOYINFOEX joyinfoex;joyinfoex.dwSize = sizeof(JOYINFOEX);joyinfoex.dwFlags = JOY_RETURNALL;while(1){//读取手柄信息UINT joyNums;joyNums = joyGetNumDevs();
//      printf("当前手柄数量:%d \n",joyNums);if (joyNums>=1){MMRESULT joyreturn = joyGetPosEx(JOYSTICKID1, &joyinfoex);if(joyreturn == JOYERR_NOERROR){printf("0x%09d ", joyinfoex.dwXpos);printf("0x%09d ", joyinfoex.dwYpos);//printf("0x%09X ", joyinfoex.dwZpos);//printf("0x%09X ", joyinfoex.dwPOV);//printf("0x%09X ", joyinfoex.dwButtons);printf("\n");}else{switch(joyreturn) {case JOYERR_PARMS :printf("bad parameters\n");break;case JOYERR_NOCANDO :printf("request not completed\n");break;case JOYERR_UNPLUGGED :printf("joystick is unplugged\n");break;default:printf("未知错误\n");break;}}}if(kbhit()) break;Sleep(300);}return 0;
}

第一步:需要包含外部库,我用的QT开发,需要在.pro文件中添加

LIBS += -lWinmm

包含以下的头文件

#include <Windows.h>
#include <WinUser.h>
#include <MMsystem.h>

第二步:查询游戏手柄按键信息

1.方向键(前、后、左、右)

方向键
按键 访问方式 键值
joyinfoex.dwPOV JOY_POVFORWARD
joyinfoex.dwPOV JOY_POVBACKWARD
joyinfoex.dwPOV JOY_POVLEFT
joyinfoex.dwPOV JOY_POVRIGHT
默认状态 joyinfoex.dwPOV JOY_POVCENTERED

默认没有按键的时候发送 JOY_POVCENTERED 信号

//方向键
if (joyinfoex.dwPOV == JOY_POVFORWARD)//前
{printf("前");
}
if (joyinfoex.dwPOV == JOY_POVCENTERED)//默认没有按键时发送此信号
{printf("宫保鸡丁");
}
if (joyinfoex.dwPOV == JOY_POVRIGHT)//右
{printf("右");
}
if (joyinfoex.dwPOV == JOY_POVBACKWARD )//后
{printf("后");
}
if (joyinfoex.dwPOV == JOY_POVLEFT)//左
{printf("左");
}

2.获取32个按键按下,可以进行组合。

按键 访问方式 键值
32个组合按键 joyinfoex.dwButtons 通过函数测

3.获取摇杆、LT\RT信息

(1)、左摇杆,通过xy的坐标来读取,原点是32767

(2)、右摇杆通过ur的坐标来读取,原点是32767

按键 访问方式 键值
左摇杆 x坐标:joyinfoex.dwXpos 0-65535
y坐标:joyinfoex.dwYpos 0-65535
右摇杆 u坐标:joyinfoex.dwUpos 0-65535
r坐标:joyinfoex.dwRpos 0-65535
LT\RT

joyinfoex.dwZpos

没有按键按下:

RT按下:

LT按下:

32767

32767 - 128

32767 - 65408

if (joyinfoex.dwXpos<32767 && joyinfoex.dwYpos>32767)
{printf("宫保鸡丁");
}
printf("%d", joyinfoex.dwXpos);
printf("%d", joyinfoex.dwYpos);
printf("%d", joyinfoex.dwZpos);
if (joyinfoex.dwZpos == 128)
{printf("宫保鸡丁");
}
printf("%d", joyinfoex.dwUpos);
printf("%d", joyinfoex.dwRpos);

这样就可以读取手柄上的按键信息,进行判断。

C++游戏手柄编程-基于windowsAPI-JOYSTICKID相关推荐

  1. matlab与vc混合编程指导书.doc,vc与matlab混合编程—基于com.doc

    vc与matlab混合编程-基于com.doc VC与MATLAB混合编程基于COM2010年03月21日星期日1118注意旨在提供一份VC调用MATLAB的快速试验参考和一些实际经验,不保证所有内容 ...

  2. r语言 悲观剪枝_《R语言编程—基于tidyverse》新书信息汇总

    我之前预告过的 R 语言新书,起名为<R语言编程-基于tidyverse>,本书的目的是为了在国内推广 R 语言和 R 语言最新技术,电子版将始终跟踪最新并免费分享.本书非常适合新手 R ...

  3. Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件

    Python之ffmpeg:利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 目录 利用python编程基于ffmpeg将m4a格式音频文件转为mp3格式文件 1.先下载ff ...

  4. 网络编程——基于TCP协议的通讯录【课程设计】

    网络编程--基于TCP协议的通讯录[课程设计] 本文目录 网络编程--基于TCP协议的通讯录[课程设计] 一.设计题目和要求 设计目标: 课程设计系统组成及模块功能: 二.设计内容 服务端 客户端 S ...

  5. ARM架构与编程--基于STM32F103 (1)LED原理图

    ARM架构与编程–基于STM32F103 (1)LED原理图 前言 学习笔记<硬件知识_LED原理图> 一.点亮一个led的步骤 当我们学习C语言的时候,我们会写个Hello程序.那当我们 ...

  6. 金融计算与编程 基于matlab,金融计算与编程.pdf

    金融市场与风险管理系列教材 金融计算与编程 ---基于 MATLAB 的应用 曹志广 著 上海财经大学出版社 ( ) 图书在版编目 CIP数据 : / : 金融计算与编程 基于 的应用 曹志广著 上海 ...

  7. 翻页时钟java代码_Android编程基于自定义控件实现时钟功能的方法

    本文实例讲述了Android编程基于自定义控件实现时钟功能的方法.分享给大家供大家参考,具体如下: 在学习安卓群英传自定义控件章节的时候,有一个例子是绘制时钟,在实现了书上的例子后就想看这个时钟能不能 ...

  8. android重力传感器横竖反,Android编程基于重力传感器实现横竖屏放向切换功能

    本文实例讲述了Android编程基于重力传感器实现横竖屏放向切换功能.分享给大家供大家参考,具体如下: 最近项目中用到了vr视频播放,因为自己实现,同时要实现横竖屏自动切换屏幕,核心代码如下: pac ...

  9. 结队编程-基于gui的四则运算生成器

    成员:卢少锐 201421123027.刘存201421033023 coding.net地址 1.需求分析:除了实现四则运算的功能外,还添加了计时器功能和语言选择功能 2.程序设计:这次作业是基于上 ...

最新文章

  1. osgearth+vs2010安装
  2. Minimum Cost-最小费用最大流
  3. Android中的Notification
  4. 如何在CRM WebClient UI里使用HANA Live Report
  5. c++ 写x64汇编 5参数_怀念9年前用纯C和汇编写的入侵检测软件
  6. to_number用法示例_Number()函数以及JavaScript中的示例
  7. android 权重的使用
  8. html中隐藏内容蜘蛛会抓取吗,蜘蛛会抓取识别JS、CSS、JSON,对SEO有什么影响
  9. C++读写文件总结 .
  10. mysql 事务处理null_如何使用Mysql正确的处理财务数据
  11. 再硬写一个最简单的HTTPSERVER
  12. 宽带路由器-mac地址克隆
  13. mysql存储过程返回结果集_原来MySQL的存储过程也可以这么玩?
  14. 用友打印问题合集 二【各模块】
  15. android无线投屏到win,无线投影仪怎么连接,看过教程,原来操作这么简单!
  16. word忘记密码怎么解除
  17. VTK系列教程九:VR图像裁剪
  18. 接入新浪微博第三方登录
  19. 【B站SXT的Java课程中的错误】054 嵌套循环_循环相关练习
  20. 监听audio是否加载完毕

热门文章

  1. (深度学习)Pytorch之dropout训练
  2. 为何 club 叫梅花
  3. excel if函数 android,Excel中IF函数的嵌套用法(多条件)
  4. 基于微信电器家电商城小程序系统设计与实现 开题报告
  5. python-输出1000以内素数的和
  6. font-size: 62.5%的意义
  7. 生信初学者必备的基础知识
  8. 原生微信小程序,搜索框(search)组件
  9. 用ADB命令写Android自动化测试脚本
  10. 神马搜索php,神马搜索api