×
嵌入式开发 > 详情

游戏操纵杆模拟鼠标的C++程序

发布时间:2020-07-03 发布时间:
|

要编写一个支持游戏操纵杆的应用程序,首先必须要捕获游戏操纵杆,接着要处理Windows发送给程序窗口的操纵杆消息,最后使用完操纵杆后,还应将捕获的操纵杆资源释放。

调用API函数joySetCapture能捕获游戏操纵杆。调用joySetCapture函数后,操纵杆产生的所有消息将会发送到指定的窗口。它的原型为:

MMRESULT joySetCapture(HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged );

其中,参数hwnd为接收操纵杆消息的窗口句柄;参数uJoyID为要捕获的操纵杆标识,它可以是JOYSTICKID1或是JOYSTICKID2,即第一、第二个游戏操纵杆;参数uPeriod为轮询的频率,单位为毫秒,它指定给应用程序发送有关操纵杆信息的间隔时间;参数fChanged为改变位置标识,可设为false。

要释放操纵杆的捕获时,使用joyReleaseCapture函数。它只有一个参数,就是操纵杆的标识JOYSTICKID1或JOYSTICKID2。

下面,就让我们用Borland C++ Builder 5.0来做一个用游戏操纵杆模拟鼠标的程序。

运行Borland C++ Builder 5.0,双击窗体Form1,在Form1的OnCreate事件中加入以下代码捕获一个游戏操纵杆:

void __fastcall TForm1::FormCreate(Tobject *Sender)

{

int JoyMsg;

//捕获游戏操纵杆

JoyMsg=joySetCapture(Handle,JOYSTICKID1,0,false);

if(JoyMsg==JOYERR_NOCANDO)

{

//捕获失败

ShowMessage(不能捕获游戏杆!);

}

else

{

if(JoyMsg==JOYERR_UNPLUGGED)

{

//没有连接

ShowMessage(游戏杆未与系统连接!);

}

else

{

if(JoyMsg==MMSYSERR_NODRIVER)

{

//没有安装

ShowMessage(系统没有安装游戏杆!);

}

else

{

//捕获成功

ShowMessage(捕获游戏杆成功!);

}

}

}

在Form1的OnCloseQuery事件中加入代码,让程序关闭时释放操纵杆捕获的资源:

void __fastcall TForm1::FormCloseQuery(Tobject *Sender, bool CanClose)

{

//释放操纵杆捕获

joyReleaseCapture(JOYSTICKID1);

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
寻找半导体产业未来10年的驱动力