Page 1 sur 1

DirectInput

MessagePosté: 17 Avr 2006, 18:45
par bilaloch
Bonjour a tous,

J'ai suivi sur le site le tutorial pour l'utilisation de DirectInput, mais je souhaiterais avoir l'url des deux modules d'utilisation qu'il cite a la fin du cours. Je vous explique ma situation. Je sais initialiser DirectInput, et recuperer les données. Mais comment je saurais quelles données correspondent a quelles touches ?

Code: Tout sélectionner
VOID InitInput (HWND hWnd)
{
   LPDIRECTINPUT lpdi;
   DirectInputCreate(hInstance,DIRECTINPUT_VERSION,&lpdi,NULL);

   LPDIRECTINPUTDEVICE lpdiPeriph;
   lpdi-> CreateDevice(GUID_SysMouse,&lpdiPeriph,NULL);

   lpdiPeriph-> SetDataFormat(&c_dfDIMouse);

   DIPROPDWORD dipw=
   {
   // En-tête
   {
   sizeof(DIPROPDWORD),
   sizeof(DIPROPHEADER),
   0,
   DIPH_DEVICE,
   },
   // Données
   BUFFERSIZE
   };
   lpdiPeriph-> SetProperty(DIPROP_BUFFERSIZE,& dipw.diph);
   lpdiPeriph-> SetCooperativeLevel(hWnd,DISCL_EXCLUSIVE | DISCL_FOREGROUND);
   lpdiPeriph-> Acquire();

}


VOID LireInput (int Xpos, int Ypos, int Xposp, int Yposp, DWORD Button, DWORD Appui)
{
   DIDEVICEOBJECTDATA buffer[BUFFERSIZE];
   DWORD dwItems=BUFFERSIZE;
   // On lit
   lpdiPeriph-> GetDeviceData(sizeof(DIDEVICEOBJECTDATA),buffer,& dwItems,0);
   // Et on traite
   for(DWORD d=0;d< dwItems;d++)
   {
      switch(buffer[d].dwOfs)
      {
      // Traitement différent selon que l'on utilise le clavier ou la souris
      }
   }
}


Dans la variable "Button" j'aimerais savoir quels boutons de la souris l'utilisateur appuie. Dans la variable "Appui" j'aimerais savoir quel type d'appui (Up ou Down). Je voudrais connaitre, lorsque l'on clique avec le bouton gauche de la souris, la position x et y de la souris dans l'application en pixels ("Xpos" et "Ypos" utilisé pour la selection deja programmé), et lorsque l'on clique avec le bouton droit, de combien de pixels la souris a avancé (nombre positif) ou reculé (nombre negatif) dans l'axe x et y ("Xposp" et "Yposp" utilisé pour la rotation Y et X deja programmé). Comment dois je y remedier et quand initialiser DirectInput ?

Je travaille sous Visual C++ 2005...

Merci beaucoup... :)