2010-02-15 9 views
1

현재 렌더링 된 윈도우 위에 떠 다니는 이유가 있습니다. 몇 가지 이유 때문에 좋은 생각이 들지 않습니다. 1) 내가 볼 수있는 렌더링 시간을 낭비했습니다. 2) 프레임마다 모든 상태 표시 줄을 업데이트 할 때마다 모든 프레임이 다시 렌더링되어야합니다.상태 표시 줄을 올바르게 추가하는 방법은 무엇입니까?

그래서 내 상태 표시 줄을위한 공간을 남기고 그 영역에서 렌더링 할 수있는 OpenGL 자료가없는 창을 어떻게 만들 수 있습니까?

이 순간 나는 상태 표시 줄에 빈 공간을 만드는 방식으로 내 뷰포트를 조정하지만 내 현재 방식대로 문제가 발생합니다. 내 코드를 훨씬 더 복잡하게 만들어야 작동 할 수 있습니다.

+0

프레임 워크 또는 엄격하게 Win32 API를 사용하고 있습니까? –

+0

win32 API 내 생각 엔 Visual Studio 2008도 사용합니다. – Newbie

+0

그래서 MFC가 아닌 원시 API 호출을 사용하고 있습니까? – Johnsyweb

답변

2

http://www.gamedev.net/community/forums/topic.asp?topic_id=291682

편집 : 그것의하지 간단한 질문에 대답합니다. Win32에서 자식 창이 무엇인지 모르는 경우에는 훨씬 더 나은 위치에있을 수 있습니다. 그러나 누군가에게 당신에게 윈도우 윈도우 시스템에 대한 완전한 설명을달라고하는 것은 결코 위업이 아닙니다.

은 기본적으로 당신이 WS_CHILD 스타일 및 새 창을 원하는 창 핸들로 설정된 hWndParent 매개 변수를 사용하여 창을 만들 CreateWindow을 사용하여 수행 할 수있는 자식 창을 만들 필요가 : 여기

는 개요입니다 의 아이가되기.

메시지 펌프에서 DispatchMessage (Get/PeekMessage를 수행하고 메시지 펌프가 메시지를 보내는 루프)에서 호출하면 반드시 창을 만들었을 때 window procedure이 생성됩니다. 창 프로 시저에서 메시지 유형을 켜고 창으로 보낸 각 메시지를 처리 ​​할 수 ​​있습니다.

여기에서 설정과 같은 것을 처리 할 수 ​​있습니다. 초기 창은 WM_CREATE 또는 WM_INITDIALOG입니다 (만드는 창 유형에 따라 다름). 거기에서 자식 창을 만들어야합니다 (ShowWindow를 호출하는 것을 잊지 말고 !!). 이 시점에서 자식 창 핸들 (HWND)에 연결될 DirectX 장치를 설정할 수 있습니다.

더욱이 창 크기를 조정하려면 WM_SIZE 메스 데이터를 고려해야합니다. 그러나 나는 그것이 올바른 크기가되도록 DirectX 장치를 파괴하고 다시 만들어야하므로 매우 복잡해지기 때문에 나머지 작업을 시작하기 전에 작업을 시작하기를 강력히 권장합니다.

어쨌든 간단한 개요 만 있습니다. 도움이되기를 바랍니다!

+0

젠장, 내가 DirectX가 아닌 OpenGL을 사용하고 있다고 깜빡했다. 이게 뭐가 바뀌니? 이 모든 것이 꽤 복잡해 보입니다. Visual Studio에서이 작업을 수행하는 쉬운 방법이 있습니까? – Newbie

+0

Visual Studio에서 쉽게 수행 할 수있는 방법은 없으며 DX가 아닌 GL을 사용하는지 여부는 별 차이가 없습니다.OpenGL 렌더러 "위젯"을 기본 유형 중 하나로 QT를 살펴보고 싶을 수도 있습니다. – Goz

+0

Actualyl Visual Studio의 유료 버전을 사용하지 않고 쉽게 할 수있는 방법은 없다고 말해야합니다 ... 하지만 많은 사람들이 MFC가 얼마나 쉽고 까다로운 지에 대해 저와 논쟁 할 것입니다. – Goz

0

"렌더링 된 창"과 "상태 표시 줄"을 포함하는 창의 하위 노드로 만들고, 포함하는 창에 대한 메시지에 WM_SIZE 메시지의 일부 코드를 추가하여 하위 노드가 겹치지 않도록 할 수 있습니다.

+0

예, 어떻게 할 수 있습니까? 예? 자습서? 아무것도! – Newbie

관련 문제