基于Windows api手柄映射编程

转:https://www.cnblogs.com/qyit/archive/2011/11/21/2257687.html

一个手柄/键盘映射程序,无外乎就四部分:一、界面;二、接收;三、处理;四、输出。

界面就不多说了。

接收,就是接收手柄的输出。这部分有多种方法,比如windows API和DirectX,这里我们选前者。

处理,就是将接收到的数据映射为输出数据。

输出,就是向操作系统发送假的键盘事件,从而完成映射过程。

 

接收部分:

那么,我们先来进行知识的准备。为了完成接收部分,我们需要了解和手柄相关的windows API。其中常用的较重要的函数如下:

joyGetDevCaps                  查询指定的游戏杆设备以确定其性能

joyGetNumDevs                  返回系统支持的游戏杆设备的数量

joyGetPos                       查询指定的游戏杆设备的位置和活动性

joyGetPosEx                    查询一个游戏杆设备的位置和它的按扭状态

joyGetThreshold                查询指定的游戏杆设备的当前移动阈值

joyReleaseCapture              释放由JoySetCapture函数设置的在指定游戏杆设备上的捕获

joySetCapture                  发送一个游戏杆消息到指定的窗口

joySetThreshold                设置指定的游戏杆设备的移动阈值

要使用这几个API,需要连接winmm.lib,包含mmsystem.h头文件。

如果仅制作基本的映射功能,那么我们并不需要用到全部的函数。主要使用的是这个:

MMRESULT joyGetPosEx(UINT uJoyID, LPJOYINFOEX pji) 

这个函数可以主动取得游戏杆信息。

参数uJoyID是指手柄的ID,对于单手柄编程,填写JOYSTICKID1即可。 

参数pji是一个指向JOYINFOEX型结构体的指针。JOYINFOEX的定义如下:

typedef struct joyinfoex_tag {

    DWORD dwSize;     /* size of structure */

    DWORD dwFlags;       /* flags to indicate what to return */

    DWORD dwXpos;                /* x position */

    DWORD dwYpos;                /* y position */

    DWORD dwZpos;            
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值