目前它浮在我的渲染窗口之上,我不認爲這很好,原因如下: 1)我浪費渲染時間來渲染不可見的東西。 2)它必須再次渲染每一幀時,我不會更新整個狀態欄反正每幀。如何正確添加狀態欄?
那麼,我怎麼能創建一個窗口,它爲我的狀態欄留下空間,並且我的OpenGL的東西都不會呈現在該區域中?
在這一刻,我只是調整我的視口的方式,爲狀態欄創建空的空間,但它導致我目前的做事方式的一些問題。我將不得不讓我的代碼看起來更加混亂才能使其工作。
目前它浮在我的渲染窗口之上,我不認爲這很好,原因如下: 1)我浪費渲染時間來渲染不可見的東西。 2)它必須再次渲染每一幀時,我不會更新整個狀態欄反正每幀。如何正確添加狀態欄?
那麼,我怎麼能創建一個窗口,它爲我的狀態欄留下空間,並且我的OpenGL的東西都不會呈現在該區域中?
在這一刻,我只是調整我的視口的方式,爲狀態欄創建空的空間,但它導致我目前的做事方式的一些問題。我將不得不讓我的代碼看起來更加混亂才能使其工作。
http://www.gamedev.net/community/forums/topic.asp?topic_id=291682
編輯:它不是一個簡單的問題來回答。如果你不知道什麼是Win32下的子窗口,那麼你可能處於一個更好的位置。然而,要求某人給你一個窗口視窗系統的完整解釋並不是什麼意思。
這裏是一個概述:
基本上你需要創建可使用CreateWindow創建具有WS_CHILD風格,並設置爲窗口句柄你想要的新窗口的hWndParent參數窗口中完成一個子窗口成爲一個孩子。
當你創建的窗口,你將有必然,創建一個window procedure當您從消息泵調用DispatchMessage(循環,做一個Get /的PeekMessage,然後分派的消息是消息泵)。在窗口過程中,您可以切換消息類型並處理髮送到窗口的每條消息。
從這裏你可以處理像安裝程序的東西。您的初始窗口將具有WM_CREATE或WM_INITDIALOG(取決於您創建的窗口類型)。從那裏您需要創建子窗口(不要忘記撥打ShowWindow以使其可見!)。從這一點開始,您可以將DirectX設備設置爲連接到子窗口句柄(HWND)。
此外,如果您希望能夠重新調整窗口大小,那麼您還需要考慮WM_SIZE消息。不過,我強烈建議在開始研究之前嘗試讓其餘部分工作,因爲它會變得非常複雜,因爲您需要銷燬並重新創建DirectX設備,使其尺寸合適。
無論如何,這只是一個簡單的概述。我希望它有幫助!
哦,廢話,我忘了說我正在使用OpenGL而不是DirectX。這會改變什麼嗎?這一切似乎都很複雜,有沒有在Visual Studio中做這件事的一些簡單方法? – Newbie 2010-06-22 15:07:37
在Visual Studio中沒有簡單的方法,不管它是否使用GL而不是DX都沒有太大的區別。你可能想看看QT,因爲它有一個OpenGL渲染器「小部件」作爲其主要類型之一:) – Goz 2010-06-22 15:29:47
Actualyl我應該說沒有一個簡單的方法來做到這一點沒有付費的版本的Visual Studio ...但隨後很多人會和我一起討論MFC是如此簡單或困難的... – Goz 2010-06-23 17:54:56
一種方法可能是讓您的「渲染窗口」和「狀態欄」同時包含一個包含窗口的子項,併爲包含窗口的WM_SIZE
消息添加一些代碼以定位子項以避免重疊。
是的,怎麼樣?例?教程?什麼! – Newbie 2010-06-21 09:19:23
您是使用框架還是嚴格使用Win32 API? – 2010-02-15 20:51:31
win32 API我猜,但我也使用Visual Studio 2008。 – Newbie 2010-02-15 21:57:50
所以你使用原始的API調用,而不是MFC? – Johnsyweb 2010-06-03 14:04:42