请帮写一个小程序好吗?是关于捕捉游戏杆信息的,我自己写的程序在bcb6中怎么也通不过?????
请帮写一个小程序好吗?是关于捕捉游戏杆信息的,我自己写的程序在bcb6中怎么也通不过?????
请各位BCB高手们相助。(在线急等,不解决不下线。)
请给我写一个简单的BCB的程序,用于捕捉消息MM_JOY1BUTTONDOWN(按下游戏杆的键) 和消息MM_JOY1MOVE(转动游戏杆)的,要求:在一个普通的Form1上运行,如收到相应消息,出个MessageBox告知。
许多高手们可能没有游戏杆,下面我简要把我知道的写一下。1、多媒体用的是mmsystem.h 和winmm.lib
消息名是对的,我从MSDN上COPY下来的。问题解决后再给100分答谢。
问题点数:100、回复次数:7Top
1 楼jlcclyc(lyc)回复于 2003-11-04 20:45:18 得分 0
my email is:
chengmingcompany@sohu.comTop
2 楼jishiping(JSP 季世平)回复于 2003-11-04 22:42:44 得分 100
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormDestroy(TObject *Sender);
private: // User declarations
protected:
void __fastcall WndProc(TMessage&);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if (joySetCapture(Handle,JOYSTICKID1,0,FALSE)) {
//这儿的JOYSTICKID1表示是第一个游戏杆插口
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(Handle, "Couldn't capture the joystick.",
Caption.c_str(), MB_OK | MB_ICONEXCLAMATION);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
joyReleaseCapture(JOYSTICKID1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WndProc(TMessage& Msg)
{
TForm::WndProc(Msg);
if (Msg.Msg==MM_JOY1BUTTONDOWN) {
ShowMessage("按下了游戏杆按键");
}
else if(Msg.Msg==MM_JOY1MOVE) {
ShowMessage("转动游戏杆");
}
}Top
3 楼jishiping(JSP 季世平)回复于 2003-11-04 22:43:16 得分 0
我没有游戏杆,没法测试。Top
4 楼netsys2(来电!)回复于 2003-11-05 09:38:24 得分 0
有季头在,我就不发言了Top
5 楼jlcclyc(lyc)回复于 2003-11-05 13:28:26 得分 0
在季版主的帮助下,我已完成了。现将我用的代码放在下面,愿和我有相同困惑的朋友们分享。
游戏杆编程
**********Unit1.cpp***************
//---------------------------------------------------------------------------
#include <vcl.h>
#include <mmsystem.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
if (joySetCapture(Handle,JOYSTICKID1,0,FALSE))
{
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(Handle, "Couldn't capture the joystick.",
Caption.c_str(), MB_OK | MB_ICONEXCLAMATION);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::WndProc(TMessage &Message)
{
if(Message.Msg==MM_JOY1BUTTONDOWN)
{
ShowMessage("按下了游戏杆按键");
}
if(Message.Msg==MM_JOY1MOVE)
{
ShowMessage("移动游戏杆");
}
TForm::WndProc(Message);
}
//---------------------------------------------------------------------------
*********** Unit1.h ***********************
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
private: // User declarations
void __fastcall WndProc(TMessage &Message);
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
************* Project1.cpp ********************
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USERES("Project1.res");
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
Top
6 楼yjy1001(蓝鲸--优秀得郁闷的鱼)回复于 2003-11-05 13:28:47 得分 0
.....有道理
Top
7 楼jlcclyc(lyc)回复于 2003-11-05 13:30:02 得分 0
多谢各位。Top




