各位老大帮我看看错误啊?

aurorabxy 2004-08-11 08:11:19
老大,这是我看到得一个用摇杆模拟鼠标得一个BCB程序,但是我自己运行起来确是很多错误,而我又找不到?
老大能不能帮我试试看?纠正一下呢?谢谢老大哦!
//---------------------------------------------------------------------------

#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose);
private:// User declarations
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,Tmessage,OnJoyDown)
MESSAGE_HANDLER(MM_JOY1MOVE,Tmessage,OnJoyMove)
END_MESSAGE_MAP(Tform)
public: // User declarations
__fastcall TForm1(TComponent* Owner);
void __fastcall OnJoyDown(Tmessage &Message);
void __fastcall OnJoyMove(Tmessage &Message);

};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif




//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

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("捕获游戏杆成功!");
}
}
}

 

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCloseQuery(TObject *Sender, bool &CanClose)
{ //释放操纵杆捕获
joyReleaseCapture(JOYSTICKID1);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::OnJoyDown(Tmessage &Message)
{
if(Message.Wparam & JOY_BUTTON1)
{
//模拟鼠标左键按下
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
Caption=”左键按下”;
}
if(Message.Wparam & JOY_BUTTON2)
{
//模拟鼠标右键按下
mouse_event(MOUSEEVENTF_RIGHTDOWN,0,0,0,0);
Caption="右键按下";
}
if(Message.Wparam & JOY_BUTTON3)
{
//模拟鼠标左键抬起
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
Caption="左键抬起";
}
if(Message.Wparam & JOY_BUTTON4)
{
//模拟鼠标右键抬起
mouse_event(MOUSEEVENTF_RIGHTUP,0,0,0,0);
Caption="右键抬起";
}
//继续传递消息
Tform::Dispatch(&Message);
}

//自定义的MM_JOY1MOVE消息响应函数OnJoyDown
void __fastcall TForm1::OnJoyMove(Tmessage &Message)
{
int x,y;
POINT pt;
//取得鼠标当前坐标
GetCursorPos(&pt);
x=LOWORD(Message.Lparam);
y=HIWORD(Message.Lparam);
if(x!=32678)
{
if(x)
{
//向右
pt.x+=10;
}
else
{
//向左
pt.x-=10;
}
}
if(y!=32678)
{
if(y)
{
//向下
pt.y+=10;
}
else
{
//向上
pt.y-=10;
}
}
//设置鼠标坐标
SetCursorPos(pt.x,pt.y);
//继续传递消息
Tform::Dispatch(&Message);
}


  






...全文
164 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aurorabxy 2004-08-12
  • 打赏
  • 举报
回复
主要是头文件里得一些东东,我现在搞不清楚要有哪些?这个程序得头文件调试得时候并不对啊
aurorabxy 2004-08-12
  • 打赏
  • 举报
回复
不需要摇杆也可以,就是帮我看看错误在哪里?帮我调调!
我现在运行不起来啊
aurorabxy 2004-08-12
  • 打赏
  • 举报
回复
能把头文件也帮我写上嘛?我想调试一下.
另外我写得那个程序能帮我看一下错误嘛?谢谢
yjy1001 2004-08-12
  • 打赏
  • 举报
回复
另外的错误,是大小写出错,老妖说了
yjy1001 2004-08-12
  • 打赏
  • 举报
回复
就一个头文件

我这里没有 摇杆,无法帮你调试的
ccrun.com 2004-08-12
  • 打赏
  • 举报
回复
Tmessage应为TMessage吧。
注意大小写
aurorabxy 2004-08-12
  • 打赏
  • 举报
回复
我又重新调试了一下,joySetCapture等函数错误提示倒是没有
但是pravite里面的错误不知道怎么办?
Tmessage OnJoyDown OnJoyDown提示为没有相应定义等等错误.
jishiping 2004-08-12
  • 打赏
  • 举报
回复
摇杆的api函数,用到的就是头文件mmsystem.h。“提示没有定义”,应该还是你其它地方写错了吧。
aurorabxy 2004-08-12
  • 打赏
  • 举报
回复
我加了你所说得头文件,但是错误还是依旧啊!
而且基本都在private里面!
另外摇杆得api函数得调用需要什么头文件呢?
我得用joySetCapture等函数时,错误提示没有定义?
yjy1001 2004-08-12
  • 打赏
  • 举报
回复
这些代码写得都没问题----就是简单了点.........
yjy1001 2004-08-12
  • 打赏
  • 举报
回复
只需要加入这句话 就可以编译成功了
#include <mmsystem.h>

你包含对应的头文件,当然无法编译
constantine 2004-08-11
  • 打赏
  • 举报
回复
操纵杆,这里没有帮不上忙

void __fastcall TTetrisForm::JoyMove(TMessage &msg)
{
if (!isPlaying) return;
int PosX,PosY;
PosX=msg.LParamLo;
PosY=msg.LParamHi;
if (PosX<10000)
MoveLeft();
else if (PosX>55000)
MoveRight();
if (PosY>55000)
MoveDown();

}
void __fastcall TTetrisForm::JoyPress(TMessage &msg)
{
if (!isPlaying) return;
if (msg.WParam & JOY_BUTTON1)
Rotate();
}
void __fastcall TTetrisForm::J1Click(TObject *Sender)
{
JOYINFO JoyInfo;
J1->Checked=!J1->Checked;
if (!J1->Checked)
joyReleaseCapture(JOYSTICKID1);
else {
joyGetPos(JOYSTICKID1,&JoyInfo);
joySetCapture(Handle,JOYSTICKID1,2*JoyCaps.wPeriodMin,false);
}

}
//---------------------------------------------------------------------------


void __fastcall TTetrisForm::ConnectJoy()
{
MMRESULT Result;
JOYINFO JoyInfo;
if (joyGetNumDevs()==0){
J1->Enabled=false;
return;
}
Result=joyGetPos(JOYSTICKID1,&JoyInfo);
if (Result!=JOYERR_NOERROR){
J1->Enabled=false;
return;
}

if (J1->Checked){
joyGetDevCaps(JOYSTICKID1,&JoyCaps,sizeof(JOYCAPS));
joySetCapture(Handle,JOYSTICKID1,2*JoyCaps.wPeriodMin,false);
}
}

void __fastcall TTetrisForm::FormDestroy(TObject *Sender)
{
if (J1->Checked)
joyReleaseCapture(JOYSTICKID1);
}
//---------------------------------------------------------------------------

来自《C++Builder 5.0高级编程技术》
给你参考

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧