Текущий архив: 2008.04.27;
Скачать: CL | DM;
Вниз
процедура обработки нажатия на кнопку джойстика Найти похожие ветки
← →
Adios (2008-03-31 21:14) [0]помогите написать процедуру обработки нажатия на кнопку джойстика, может кто знает какие сообщения идут в систему при нажатии кнопок джойстика?
← →
Сергей М. © (2008-03-31 21:16) [1]см. DirectX.DirectInput
← →
Adios (2008-04-01 02:41) [2]может подкинете ссылку на русскоязычный материал?
← →
Сергей М. © (2008-04-01 09:44) [3]http://megalib.com/books/461/helloword/directx_01.htm
← →
Reindeer Moss Eater © (2008-04-01 09:53) [4]Для начала подошло бы и просто uses mmsystem.
← →
Adios (2008-04-01 11:49) [5]mmsystem я уже посмотрел, мне надо сделать чтобы именно по нажатию кнопки джойстика срабатывала процедура, а не по таймеру
← →
Reindeer Moss Eater © (2008-04-01 11:51) [6]Через DX будет как раз по таймеру, в отличие от джоя из mmsystem, который работает чере сообщения окну.
← →
Adios (2008-04-01 11:56) [7]тогда как узнать что за сообщения приходят окну?, я в ммситем просмотрел все функции и ненашол ни одной с выходом сообщения
← →
Reindeer Moss Eater © (2008-04-01 12:22) [8]showmessage что ли искал?
открывай mmsystem.pas и ищи строку
{ joystick function prototypes }
← →
Adios (2008-04-01 20:51) [9]нашол решение, но оно на сях, если кого не затруднит помогите расшифровать,буду очень благодарен.
#ifndef joy1H
#define joy1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
#include <ImgList.hpp>
#include <Buttons.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TShape *Shape2;
TShape *Shape1;
TShape *Shape3;
TShape *Shape4;
TMemo *Memo1;
TImageList *ImageList1;
TPaintBox *PaintBox1;
void __fastcall FormCreate(TObject *Sender);
void __fastcall UpdButton(TMessage &msg);
void __fastcall UpdCoord(TMessage &msg);
void __fastcall FormDestroy(TObject *Sender);
private:
int jnum; JOYCAPS JoyCaps;
bool connect;
int stepX,stepY;
TPoint Pos;
// User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MM_JOY1BUTTONDOWN,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY1BUTTONUP,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY1MOVE,TMessage,UpdCoord)
MESSAGE_HANDLER(MM_JOY2BUTTONDOWN,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY2BUTTONUP,TMessage,UpdButton)
MESSAGE_HANDLER(MM_JOY2MOVE,TMessage,UpdCoord)
END_MESSAGE_MAP(TForm)
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <mmsystem.h>
#include "joy1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
MMRESULT jr; JOYINFOEX JoyInfo;
int joycount=joyGetNumDevs();
if (joycount=0) Memo1->Lines->Add("Драйверы джойстика не установлены");
else
{
connect=false;
jr=joyGetPosEx(JOYSTICKID1,&JoyInfo);
if (jr ==JOYERR_NOERROR)
{
connect=true;
jnum= JOYSTICKID1;
}
else if (jr == MMSYSERR_INVALPARAM)
ShowMessage("Ошибка определения наличия джойстика");
else if((jr=joyGetPosEx(JOYSTICKID2,&JoyInfo)) == JOYERR_NOERROR)
{
connect = true;
jnum= JOYSTICKID2;
}
}
joyGetDevCaps(jnum,&JoyCaps, sizeof(JOYCAPS));
if (connect) Memo1->Lines->Add("Джойстик подключен") ;
else Memo1->Lines->Add("Джойстик не подключен") ;
Memo1->Lines->Add("Номер устройства - "+ IntToStr(jnum));
Memo1->Lines->Add("Наименование - " + AnsiString(JoyCaps.szPname));
Memo1->Lines->Add("Число кнопок - " + IntToStr(JoyCaps.wNumButtons));
if (connect) joySetCapture(Handle,jnum,2*JoyCaps.wPeriodMin,FALSE);
stepX = (JoyCaps.wXmax - JoyCaps.wXmin)/ PaintBox1->Width;
stepY = (JoyCaps.wYmax - JoyCaps.wYmin)/ PaintBox1->Height;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UpdButton(TMessage &msg)
{
Shape1->Visible= (msg.WParam &JOY_BUTTON1);
Shape2->Visible= (msg.WParam &JOY_BUTTON2);
Shape3->Visible= (msg.WParam &JOY_BUTTON3);
Shape4->Visible= (msg.WParam &JOY_BUTTON4);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UpdCoord(TMessage &msg)
{
JOYINFO JoyInfo;
TCanvas *pCanvas = PaintBox1->Canvas;
pCanvas->Brush->Color=Form1->Color;
pCanvas->FillRect(Rect(0,0,PaintBox1->Width,PaintBox1->Height));
Pos.x = msg.LParamLo;
Pos.y = msg.LParamHi;
int x=(Pos.x-JoyCaps.wXmin)/stepX-ImageList1->Width/2;
int y=(Pos.y-JoyCaps.wYmin)/stepY-ImageList1->Height/2;
ImageList1->Draw(pCanvas,x,y,0,true);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
if (connect) joyReleaseCapture(jnum);
}
//---------------------------------------------------------------------------
Страницы: 1 вся ветка
Текущий архив: 2008.04.27;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.02 c