Commençant un moteur 3D, j'ai besoin de récupérer l'appui des touches du
clavier pour faire bouger le joueur.
Pour cela, il n'y a pas de problèmes et tout marche bien.
Pour récupérer l'appui des touches, j'utilise les messages WM_KEYDOWN et
autres (j'évite DirectInput, je préfère en rester indépendant). Mais le
problème qui se pose à moi, c'est que windows gère automatiquement
l'autorepeat des touches selon les paramètres du panneau de
configuration. Du coup, si l'utilisateur garde appuyé la touche "Z", ça
me fait : un message pour la touche "Z", une attente de quelques
secondes, puis la suite des messages de la touche "Z" enchainés...
Donc voilà, en fait je voudrais simplement mettre un temps d'autorepeat
de 0 quand mon appli a le focus, et remettre le normal après.
Je n'ai pas trouvé de fonction pour faire ça dans la MSDN ou autre...
Quelqu'un peut m'éclairer ?
--
Michaël Monerau
-= JJG =-
Ca rejoint ce qu'on dit les autres, Game Loop avec PeekMessage() & GetAsyncKeyState(), qu'on trouve ds tous les sources de jeux, avec les define de A. LaMothe : #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
Merci, je m'en sers effectivement maintenant :)
-- Michaël Monerau -= JJG =-
Christian ASTOR a écrit :
Michaël Monerau a écrit:
Utilise une Game Loop (PeekMessage())
C'est déjà ce que je fais. Où veux-tu en venir ?
Ca rejoint ce qu'on dit les autres, Game Loop avec PeekMessage() &
GetAsyncKeyState(), qu'on trouve ds tous les sources de jeux,
avec les define de A. LaMothe :
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
Ca rejoint ce qu'on dit les autres, Game Loop avec PeekMessage() & GetAsyncKeyState(), qu'on trouve ds tous les sources de jeux, avec les define de A. LaMothe : #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)