Содержание материала

 

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

}

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

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить