当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

用游戏操作杆摸拟鼠标[VC/C++编程]

赞助商链接



  本文“用游戏操作杆摸拟鼠标[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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

调用API函数joySetCapture能捕捉游戏操作杆.调用joySetCapture函数后,操作杆产生的全部消息将会发送到指定的窗口.它的原型为:

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

此中,参数hwnd为接纳操作杆消息的窗口句柄;参数uJoyID为要捕捉的操作杆标识,它可以是JOYSTICKID1或是JOYSTICKID2,即第1、第二个游戏操作杆;参数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);
}

捕捉游戏操作杆后,Windows会把全部的操作杆消息发送给窗口Form1.当操作杆的方向钮按被按下时,产生的是MM_JOY1MOVE消息,当功效按钮被按下时,产生MM_JOY1BUTTONDOWN消息.在程序中辨别呼应并处理这两个消息,便可以模拟鼠标的移动和点击.

但是在C++ Builder中,这两条消息并非尺度的Windows消息,这就需求我们自已定义和处理消息了.在C++ Builder里呼应自定义消息的步骤为:

1.成立消息映射表

2.声明消息处理函数

3.编写消息处理函数

首先在代码编辑窗口点击右键,挑选弹出菜单的“Open Source/Header File”或是按热键Ctrl+F6,翻开窗体Form1头文件“Uint1.h”.

在窗体的TForm1类中的公有成员中加入代码来成立消息映射表,把消息的处理权交给自定义的消息处理函数:

public:

BEGIN_MESSAGE_MAP

MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)

MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)

END_MESSAGE_MAP(Tform)

然后在类的私有成员中加入代码声明消息处理函数:

private:

void __fastcall OnJoyDown(Tmessage &Message);

void __fastcall OnJoyMove(Tmessage &Message);


  以上是“用游戏操作杆摸拟鼠标[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 用游戏操作杆摸拟鼠标
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .