philmor34
Messages postés1Date d'inscriptionvendredi 27 juin 2008StatutMembreDernière intervention29 juin 2008
-
29 juin 2008 à 18:11
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 2016
-
29 juin 2008 à 20:56
Léger problème avec DirectInput
J'ai créé l'objet DirectInput8Create
dans la class de ma fenêtre
j'ai créé une classe clavier pour gérer tout le code DirectInput du clavier dans celle ci
if (KEYDOWN(buffer, DIK_RIGHT)) // J'ai ajouté ce if en pensant qu'il y
PostQuitMessage (0); // avait en problème avec ma touche ESC
for (int i= 0; i < 256; i++ ) // J'ai ajouté cette boucle for
{ // Pour tester toutes les touches
if( buffer[i] & 0x80 ) // du clavier.
{
PostQuitMessage (0);
}
}
J'ai beau appuyé sur n'importe quelle touche de mon clavier, il n'y a jamais une de mes touches pressées qui fonctionne. Si je met un point d'arrêt sur la fonction dans la boucle de message qui
appelle cette fonction, le programme est arrêté à ce point, donc elle est bien appelée.
Si je met un point d'insertion sur la méthode GetDeviceState méthode, le programme s'arrête à cette
méthode, donc la fonction est réellement bien appelée, mais comme j'entre dans visual C++,
mon programme perd l'acquisition du clavier, et donc je me retrouve dans le code d'erreur de cette
méthode.
J'utilise le DirectX SDK de mars 2008. Quelqu'un connais t'il la réponse à ce problème ?
J'ai du utilisé le niveau de coopération: DISCL_BACKGROUND | DISCL_NONEXCLUSIVE.
C'est le seul qui fonctionne, en mode debug ou release, l'application lancée dans ou en dehors de l'IDE
Visual C++.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 29 juin 2008 à 20:56
Salut,
je peux me tromper mais je suis pas sur de ton pointeur ici :
HRESULT hr = keyboard->GetDeviceState (sizeof (buffer), (LPVOID)&buffe r);
Cela m'a lair d'être l'adresse d'une adresse et pas l'adresse d'un tableau.