Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: SDL_GetModState() -funktion käyttö

Gaxx [22.08.2008 23:43:40]

#

Mitenhän mahtaa olla tuon SDL_GetModState() -funktion kanssa, kun se ei tunnu toimivan ainakaan minulla siten, kuin erinäiset lähteet sen kertovat toimivan? Sen siis pitäisi toimia tähän tapaan:

SDL_PumpEvents();
Uint8* keys = SDL_GetMouseState(NULL);
if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE]) {
    // painettiin shiftiä ja esciä
}

Tein oikein pienen ohjelman ongelman selvittämistä varten, mutta sekään ei tuottanut tulosta:

#include <cstdio>
#include <SDL/SDL.h>

int main(int argc, char** argv) {
	if(SDL_Init(SDL_INIT_VIDEO) < 0) {
		return EXIT_FAILURE;
	}

	SDL_Surface* screen = SDL_SetVideoMode(800, 600, 16, 0);
	if(!screen) {
		SDL_Quit();
		return EXIT_FAILURE;
	}

	Uint8* keys;

	while(true) {
		SDL_PumpEvents();
		keys = SDL_GetKeyState(NULL);

		// Ei toimi
		if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE] == SDL_PRESSED) {
			break;
		}

		// Toimii
		if(keys[SDLK_RETURN]) {
			break;
		}

	}

	SDL_Quit();

	return EXIT_SUCCESS;
}

Kellään antaa vinkkiä?

Edit:
SDL:n dokumentaatio: http://www.libsdl.org/cgi/docwiki.cgi/SDL_GetModState
Googlen tulokset: http://www.google.fi/search?hl=fi&q­=SDL_GetModState()&btnG=Hae&meta=

Hakoulinen [23.08.2008 10:26:45]

#

Tarkoituksella vain yksi &?

Gaxx kirjoitti:

if((SDL_GetModState() & KMOD_SHIFT) && keys[SDLK_ESCAPE] == SDL_PRESSED)

Gaxx [23.08.2008 10:44:52]

#

Hakoulinen kirjoitti:

Tarkoituksella vain yksi &?

Kyllä.

Ongelmaksi on nyt muodostunut se, että SDL_GetModState() ei reagoi shiftin painamiseen mitenkään(aina sama 4096). Sen sijaan altin ja ctrl:n painamiseen se reagoi.

Gaxx [23.08.2008 13:54:27]

#

Heee! Arvatkaapas, mistä kiikasti? Mulla oli joku vanha SDL.dll >_<

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta