2013-03-23 1 views
2

SDL2를 사용하는 Windows 응용 프로그램에서 작업하고 있습니다. 커서 표시를 변경하고 싶습니다. SDL_CreateCursor 에서 정확히 복사 된 샘플을 사용하여 커서를 만든 다음 이벤트에서 SDL_SetCursor을 호출했지만 운이없는 것 같습니다. 공식 위키는 TODO 상태로 SDL_CreateSystemCursor를보고SetCursor가 작동하지 않습니다.

SDL_Cursor * cursor = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_HAND); 
SDL_SetCursor(cursor); 

:

그래서 난 그냥 뛰어. 소스를 들여다 보니 구현 된 것 같아 유효한 커서를 만들 수 있습니다. 그러나 커서 표시는 변경되지 않았습니다.

어떻게해야합니까?

+0

예제에서 보았 듯이'SDL_CreateSystemCursor'에 많은 코드가 필요하므로 코드를 게시해야합니다. ' '스위치 (event.type) {' '의 경우 SDL_MOUSEMOTION, –

+0

난 그냥 이벤트 루프에 – pomelo

+0

'SDL_PollEvent (이벤트)를 넣어 :' 'SDL_Cursor * 커서 = SDL_CreateSystemCursor (SDL_SYSTEM_CURSOR_HAND); ' 'SDL_SetCursor (커서),' 은'휴식,' '기본' 을'휴식,'는 '}' 그리고 마우스 주위를 이동하는 동안, 그것은 때때로 내가 원하는 모양으로 변경하지만 바로이 다시 전환 디폴트의 ​​포인트 나는 '많은 코드'가 작동하도록 만드는 것이 무엇인지 알고 싶습니다. 매우 감사합니다. – pomelo

답변

0

실제 코드를 게시해야하지만, 어둠 속에서 촬영하고 내가 뭘 잘못하고 있는지 추측 할 수 있는지 알아봐야합니다. "나는 SDL_CreateCursor에서 정확하게 복사 된 샘플을 사용하여 커서를 생성 한 다음 SDL_MOUSEMOTION 이벤트 내에서 SDL_SetCursor를 호출하지만, 운이없는 것 같습니다." 나중에 적절한 이미지로 간략히 깜박이는 것처럼 보입니다.

짝수 루프가 시작되기 전에 SDL 커서를 변경하십시오. 이것은 마우스가 움직일 때마다 실행하려는 것이 아니라 초기화로 변경하는 것입니다. 코드를 이벤트 루프 이전으로 이동하고 SDL_Init 이후에 이동하십시오.

그래도 문제가 해결되지 않으면 여기에 코드를 게시하면 실제로 무엇을하는지 볼 수 있습니다.

+0

안녕하세요, SDL_init 뒤에 코드를 옮기면 마우스 커서가 절대로 바뀌지 않습니다. 코멘트 섹션에 코드를 게시하는 것은 어렵습니다. 그리고 그것은 많은 라인에 있습니다 ... 제가하는 것은 단지 .flv 프레임을 렌더링하는 것입니다. SDL 2.0을 사용합니다. 저는 SDL_Window, 윈도우의 SDL_Renderer, SDL_Texture를 만들고 렌더러에 텍스처를 렌더링합니다. 그리고 커서 모양을 창의 다른 부분에서 변경하고 싶습니다. – pomelo

+0

전통적인 Win32에서 알 수 있듯이 'WM_SETCURSOR'메시지를 처리해야합니다. 원시 Win32 메시지를 처리해야합니까? (그러나 그것은 이상하게 보입니다 ...) – pomelo

관련 문제