J'ai une application DirectX dans laquelle DDraw & DInput sont correctement initalisés.
En fait le problème est lui suivant : quand j'appuie sur une touche, il fait comme si j'appuyais plusieurs fois dessus, ce qui est très embêtant lorsque l'on saisi du texte (lettres en double/triple).
Voici mon code :
void KbInput(void)
{
#define KEYDOWN(name,key) (name[key] & 0x80)
char buffer[256];
lpDIkeyboard->GetDeviceState(sizeof(buffer),&buff
er);
if(KEYDOWN(buffer,DIK_C))
{
int n;
n = strlen(txt);
txt[n] = 'c';
txt[n+1] = '\0';
if(lpDDSBack->GetDC(&hdc) == DD_OK)
{
TextOut(hdc,0,0,txt,strlen(txt));
lpDDSBack->ReleaseDC(hdc);
}
lpDDSPrimary->Flip(NULL,0);
}
Sleep(1000 / 30);
}
donc ici cela m'écrit "cc" au lieu de "c" quand je presse la touche 'C'
et dans la boucle des messages de mon appli :
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
KbInput();
}
Le problème vient du Sleep() et de l'appel dans la boucle des messages, mais j'ai "copié" ce procédé d'un exemple de microsoft (je suis newbie 100%) et je ne sais pas comment faire autrement.
Tout n'est peut être pas clair alors si vous voulez plus de précisions, demandez.
Merci
ANT
[jfdsdjhfuetppo]--Message édité par antsite--[/jfdsdjhfuetppo]