新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于C++的游戏操纵杆模拟鼠标的程序

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

作者:时间:2010-09-16来源:网络收藏

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

本文引用地址:http://www.amcfsurvey.com/article/151532.htm

  调用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);

  }


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭