Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1205587575
Интересующийся
2008-03-15 16:26
2008.04.27
Как реверсировать клип в Adobe Premiere?


2-1207076153
i
2008-04-01 22:55
2008.04.27
Overflow...


4-1188197767
Deeman
2007-08-27 10:56
2008.04.27
Hook WH_SHELL


11-1188127195
Пётр
2007-08-26 15:19
2008.04.27
Создание TControl в произвольном окне с известным дескриптором


11-1188198341
Dodfr
2007-08-27 11:05
2008.04.27
popupmenu unexpected closing