2010-06-04 1 views
4

SDL_SetVideoMode()를 사용하여 창을 만들면 창 핸들이 아닌 표면이 반환됩니다. SDL_Window 핸들을 얻을 수있는 방법이 있습니까? 나는 거기에 SDL_GetWindowFromID 함수가 있다는 것을 알고 있지만 ID를 얻는 방법을 잘 모르겠다. SDL_GetWindowID 함수 이외에는 이미 윈도우 핸들이 필요하다.SDL_SetVideoMode를 사용할 때 내부 SDL_Window 포인터 또는 ID를 가져 오는 방법이 있습니까?

제안 사항? 크로스 플랫폼 이식성을 유지하는 것이 매우 중요하므로 가능하다면 빌트인 SDL 기능을 계속 사용하는 것을 선호합니다.

도움이된다면 창 위치와 창 크기를 가져오고 설정하려고하는데 이러한 함수는 창 핸들이 필요합니다.

감사합니다.

편집 : 또한 사용자 요청에 따라 비디오 모드가 변경되므로 SDL_SetVideoMode()를 호출 할 때마다이 ID가 변경되므로 기본값 1을 사용할 수 없습니다.

답변

-1

SDL_SetVideoMode은 윈도우가 아닌 비디오 프레임 버퍼를 기반으로 서페이스를 반환합니다 (SDL_GetVideoSurface처럼). 모든 서페이스가 윈도우에 해당한다고 가정하는 것처럼 보이지만 그렇지 않습니다.

+1

:

... screen = SDL_SetVideoMode(w, h, 0, flags); ... HWND hnd= GetActiveWindow(); 

이보기 초기화시 오류를 검사). 그러나 SDL_SetVideoMode 함수는 윈도우 생성을 처리합니다. 내가 만드는 SDL_Window에 대한 포인터를 얻고 싶습니다. – Kelsie

+0

@chrensli, 당신이 틀렸다고 생각합니다. SDL 문서에서 SetVideoMode가 창을 생성한다고 말하는 지점을 가르쳐 주시겠습니까? 어쨌든 전체 화면 창을 얻으려면'SDL_Window' 생성자를'True' 매개 변수와 함께 사용하십시오 (해당 매개 변수의 이름은'fullscreen'이며 기본값은'False'입니다). –

+1

http://www.libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode - 플래그 목록에는 창 만들기와 완전히 관련이있는 두 개의 플래그 (SDL_NOFRAME 및 SDL_RESIZABLE)가 있습니다. 하지만이 함수의 소스 코드도 살펴보고 SDL_CreateWindow를 사용하여 창을 만듭니다. 나는 잠시 뭔가 이상한 짓을했다. SDL_GetWindow 함수를 SDL_SetVideoMode 함수에 추가하여 얻으려는 창 핸들을 반환한다. 하지만 그건 좋은 일이 아닙니다. 창을 직접 만들 수도 있지만 그렇게하는 데는 많은 노력이 필요합니다. – Kelsie

0

이전의 SDL 1.2는 하나의 창만 사용하므로 핸들 자체가 유지됩니다. 저는 여기에 소스 코드를 읽고있는 방법은 다음과 같습니다

는 사용하여 창 핸들을 얻을 SDL_syswm.h을 포함 SDL_GetWMInfo

예를 들어, Windows에서 핸들을 얻기를위한 내 코드 :

SDL_SysWMinfo wmInfo; 
SDL_GetWMInfo(&wmInfo); 
HWND window = wmInfo.window; 
1

나는 SDL-1.2.15 창문과 같은 문제가 있었다, 그러나 문제는 GetActiveWindow 해결.

이 같은 SDL 창 핸들을 얻을 수 있습니다 (I, 그것은 반환 null가 아닌 것을 확인하는 것 이외의 처리 표면을 사용하지 않는 GetActiveWindow function

관련 문제