C++ 创建HWND的最简单方法

C++ 创建HWND的最简单方法,c++,winapi,visual-c++,C++,Winapi,Visual C++,我需要一个虚拟窗口在MSVC++,这将永远不会是可见的,甚至是在应用程序的主窗口之前创建。它是渲染引擎所必需的。因此,如果可能的话,我不想注册一个类 对于测试,最好是让它可见,以证明它在那里-我可以使用一个静态或按钮或什么?我一直在尝试CreateWindow(),但是当我得到一个返回值时,没有显示任何可见内容。在CreateWindow之后,您需要调用ShowWindow使其可见。在本教程的第一个教程中,他们详细描述了设置OpenGL渲染上下文所需的操作,以及窗口(和HWND)的创建是它的一部

我需要一个虚拟窗口在MSVC++,这将永远不会是可见的,甚至是在应用程序的主窗口之前创建。它是渲染引擎所必需的。因此,如果可能的话,我不想注册一个类


对于测试,最好是让它可见,以证明它在那里-我可以使用一个静态或按钮或什么?我一直在尝试CreateWindow(),但是当我得到一个返回值时,没有显示任何可见内容。

在CreateWindow之后,您需要调用ShowWindow使其可见。

在本教程的第一个教程中,他们详细描述了设置OpenGL渲染上下文所需的操作,以及窗口(和HWND)的创建是它的一部分。如果您在OpenGL环境之外需要它,我相信它们提供的代码可以很容易地被采用。

我将提交自己的测试代码以供评论:

HWND dummyHWND = ::CreateWindowA("STATIC","dummy",WS_VISIBLE,0,0,100,100,NULL,NULL,NULL,NULL);
::SetWindowTextA(dummyHWND,"Dummy Window!");

它似乎可以工作…

“渲染引擎所需”表明此窗口用于创建渲染上下文。是这样吗?在这种情况下,您最好创建一个与应用程序窗口的类相同的窗口。否则,您无法保证a)您完全可以创建上下文,b)该上下文将与您稍后使用的上下文兼容。你必须为你的主窗口注册一个类,这样就不会“额外花费”,真的。我不是在创建我自己的主窗口,所以我没有可重用的类。。。这个窗口将被引擎用作虚拟渲染窗口。。。我支持这一点,因为我经常遇到需要虚拟hWnd的情况。例如,我需要一个用于某些win32字体API的hwnd,以便在不向窗口显示的情况下将字体blit到2d内存数组中。或者指定
WS\u VISIBLE
标志。这是我想要的,但是是否有一个默认的“纯空窗口”类我可以使用?我还没有看到过。但我认为删除不需要的代码比创建新代码更容易。这就是我发布的原因。请不要引用NeHe@itzJanuary为什么不呢?另外请注意,这是一个7岁的问题/答案。@DavidHeffernan:为什么不呢?这是对这个问题的回答,在stackoverflow上回答你自己的问题(原则上)没有错。这是我对我问题的回答——在问了这个问题之后,我尝试了它,它成功了。我所说的“评论”是指它可以进行改进或其他什么。CreateWindow的返回类型是void。CreateWindowEx返回一个HWND