Domanda

Sto costruendo un gioco tetris c ++ (non c ++ .Net). Sento che i miei controlli sono strani. Voglio farlo in modo tale che quando l'utente preme uno dei tasti freccia, circa 10ms di tenerlo premuto avvierà la funzione di ripetizione di Windows. L'impostazione predefinita è di circa 500 ms ed è troppo ritardata per il mio gioco. Come posso impostare la velocità con cui cambia dal keydown al keydown di ripetizione? Non quante volte al secondo si ripete.

Grazie

* Quello che voglio fare è cambiare il ritardo di ripetizione in breve

Nel pannello di controllo nelle impostazioni della tastiera è presente la frequenza di ripetizione, come si imposta?

È stato utile?

Soluzione

In genere ciò che faresti per questo è invece di reagire al messaggio WM_CHAR che è soggetto alle normali impostazioni di ripetizione dei tasti, dovresti cercare WM_KEYDOWN e WM_KEYUP e agisci basato su un timer che hai in esecuzione. Ad esempio, se imposti il ??timer per attivarsi ogni 50 ms, puoi ripetere ogni 50 ms e comunque eseguire immediatamente la prima azione quando viene visualizzato il messaggio WM_KEYDOWN .

Altri suggerimenti

Secondo MSDN, sembra anche che potresti usare il SystemParametersInfo function e chiama use SPI_SETKEYBOARDSPEED, SPI_SETKEYBOARDDELAY.

void Key_Set () {      DWORD vecchio = 0;

SystemParametersInfo(SPI_GETKEYBOARDDELAY, 0, &old, 0);


SystemParametersInfo(SPI_SETKEYBOARDDELAY,0, &old, 0);

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top