基于Windows api手柄映射编程

本文介绍了如何使用Windows API进行手柄到键盘的映射编程。主要涉及接收手柄输入,处理输入数据,以及模拟键盘输出。通过joyGetPosEx函数获取手柄状态,并使用keybd_event函数模拟键盘事件。文章提供了一个简单的demo作为示例。
摘要由CSDN通过智能技术生成

转: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;         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值