我需要一個MSVC++虛擬窗口,這將永遠不可見,甚至在應用程序的主窗口之前創建。它是渲染引擎需要的。所以我寧願不必註冊一個班,如果可能的話。最簡單的方法來創建一個HWND
爲了測試它會更好地使其可見,以證明它在那裏 - 我可以使用靜態或按鈕或什麼?我一直在嘗試CreateWindow(),但是當我得到一個返回值時,沒有任何可見的出現。
我需要一個MSVC++虛擬窗口,這將永遠不可見,甚至在應用程序的主窗口之前創建。它是渲染引擎需要的。所以我寧願不必註冊一個班,如果可能的話。最簡單的方法來創建一個HWND
爲了測試它會更好地使其可見,以證明它在那裏 - 我可以使用靜態或按鈕或什麼?我一直在嘗試CreateWindow(),但是當我得到一個返回值時,沒有任何可見的出現。
我提出我自己的測試代碼進行批判:
HWND dummyHWND = ::CreateWindowA("STATIC","dummy",WS_VISIBLE,0,0,100,100,NULL,NULL,NULL,NULL);
::SetWindowTextA(dummyHWND,"Dummy Window!");
它似乎工作...
-1請不要把它放在答案中。它應該是對這個問題的編輯。 – 2011-03-08 11:31:51
@DavidHeffernan:爲什麼不呢?它是對這個問題的回答,在回答你自己的問題時沒有任何錯誤(原則上)。 – 2011-03-08 11:35:34
@Charles @John對不起,我誤解了。我認爲,「批評」約翰意味着他仍在掙扎,並希望得到進一步的建議。我會取消。 – 2011-03-08 11:40:22
在CreateWindow之後,您需要調用ShowWindow使其可見。
或指定'WS_VISIBLE'標誌。 – 2011-03-08 10:34:34
在第一篇教程NeHe中,他們仔細描述了設置OpenGL渲染上下文需要做些什麼,並且窗口(和HWND)的創建是其中的一部分。如果你需要它,而不是OpenGL上下文,我相信它們提供的代碼可以很容易地被採用。
這是我想要的,但沒有默認的「純空窗口」類,我可以使用? – 2011-03-08 11:25:29
我還沒有在那裏見過。但我認爲刪除不需要的代碼比創建新代碼更容易。這就是我發佈的原因。 – CygnusX1 2011-03-08 14:14:53
請不要引用NeHe – RecursiveExceptionException 2017-03-04 19:39:41
「需要一個渲染引擎」,這表明這個窗口是用來創建一個渲染上下文。是這樣嗎?在這種情況下,您應該最好創建一個與您的應用程序窗口相同的類的窗口。否則,你不能保證:a)你可以創建一個上下文,b)上下文將與你稍後使用的上下文兼容。無論如何,您必須爲您的主窗口註冊一個課程,所以它不會「額外花費」,真的。 – Damon 2011-03-08 10:30:56
我沒有創建自己的主窗口,所以我沒有類可以重用......並且此窗口將被引擎用作虛擬渲染窗口......從未實際渲染過。 – 2011-03-08 11:23:26
我第二次因爲我經常遇到需要虛擬hWnd的情況。例如,我需要一個用於win32字體API的hwnd,以便將字體粘貼到二維存儲器陣列中而不顯示到窗口。 – 2012-04-20 02:41:32