Code: |
#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); } //--------------------------------------------------------------------------- |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!