마우스의 초기 위치를 얻는 방법이 있습니까? SDL 2.0? SDL_GetMouseState(&mouse_x,&mouse_y)
에 의해 마우스 좌표를 얻으려고하지만, 나는 단지 SDL_PollEvent()
함수를 사용한 후에 예상 한 결과를 얻었고, 프로그램 시작 이후 적어도 한 번은 마우스가 움직이지 않았다면 (0,0)
이외의 값을 볼 수 없다. . SDL_MOUSEMOTION을 확인하지 않고 SDL_GetMouseState()
에 연결하면 마우스가 움직일 때만 마우스 좌표가 표시됩니다. 무엇이 잘못 되었나요? 또는 SDL_GetMouseState()
이 적합합니까?
편집 : 왜, 어떤 대답이 없습니까?SDL_GetMouseState가 초기 마우스 위치를 얻지 못한다
답변
SDL_GetMouseState()를 호출하기 전에 SDL_PumpEvents()를 호출 해보십시오.
이미 시도했지만 예상 한 결과를 얻지 못했습니다. 다시 시도했으나 변경되지 않았습니다. – user2561614
@ user2561614 : 그래서 당신은'SDL_Init(); SDL_CreateWindow(); SDL_PumpEvents(); SDL_GetMouseState()'? 왜냐하면 내 Win7 시스템에서는 내 마우스가 창 안쪽에있는 경우 합리적인 (0이 아닌) x/y를 제공하기 때문입니다. – genpfault
SDL은 동일한 파일에서 다양한 마우스 관련 기능에 의해 호출되는 SDL_PrivateSendMouseMotion에서 마우스의 위치를 내부적으로 업데이트합니다.
이러한 함수는 Windows에서 전달되는 마우스 이벤트에 대한 응답으로 이벤트 루프 처리 함수 WIN_WindowProc에서 호출됩니다.
따라서 마우스를 움직이지 않으면 이벤트가 전달되지 않으며 SDL은 마우스 위치를 알 수 없습니다. 해결책은 위치를 요청하기 전에 마우스 이벤트를 기다리고이 이벤트까지 해결 방법을 찾는 것입니다.
어떤 OS에서 SDL2를 사용하고 있습니까? – genpfault
Windows 7을 통해 실행합니다. – user2561614