C++ Win32 API创建多窗口类视口

C++ Win32 API创建多窗口类视口,c++,windows,winapi,C++,Windows,Winapi,我正在尝试为我的引擎构建一个级别编辑器,我想知道如何在一个窗口中实现多个视口窗口,如Blender、Cinema 4D或Unity,其中有渲染视口、场景层次、属性窗口等 win32 API是否具有创建这些视口窗口的功能,或者我是否必须使用CreateWindowW创建另一个没有标题栏的实例?可以想象,使用单个窗口可以实现这一点,但使用子窗口通常更容易实现这一点是的,通过CreateWindowEx创建?对于每个视图,然后是处理子窗口定位的父窗口,即拆分器类型的框架 您甚至可能会得到一个与属性列表

我正在尝试为我的引擎构建一个级别编辑器,我想知道如何在一个窗口中实现多个视口窗口,如Blender、Cinema 4D或Unity,其中有渲染视口、场景层次、属性窗口等


win32 API是否具有创建这些视口窗口的功能,或者我是否必须使用CreateWindowW创建另一个没有标题栏的实例?

可以想象,使用单个窗口可以实现这一点,但使用子窗口通常更容易实现这一点是的,通过CreateWindowEx创建?对于每个视图,然后是处理子窗口定位的父窗口,即拆分器类型的框架

您甚至可能会得到一个与属性列表等的级别视图分离的窗口树


对于子窗口来说,只需要处理一件事,即显示头顶视图、显示三维投影等,比创建一个窗口类来完成所有这些工作要简单得多。

Win32中没有视口的固有概念

要支持此类功能,甚至要创建单个视口,您需要知道如何创建自定义控件。在Win32中,自定义控件实际上只是自定义子窗口。假设您有一个名为view的自定义子窗口类,该类使用WM_PAINT处理程序中的3D库处理渲染,等等,那么要支持多个视口,基本上有两个选项:

使视图本身实现功能。多个视口不会是单独的Win32窗口。将有一个Win32子控件绘制为看起来像是多个窗口。然后,您需要100%亲自处理您为用户提供的所有内部UI交互。拖动视图分割条等。这样做的好处是,您可以按照自己的意愿进行这些交互,可能完全不标准,而且拖动和执行其他交互时的性能可能比其他交互方式更好。 对每个视口使用单独的视图子窗口。通过其他自定义子控件(如视图拆分器控件等)处理UI交互。
没有更多的注意力去关注这个问题,这个问题的答案几乎是可以给出的。要理解的关键是Win32是一个功能强大但级别较低的API。如果您正在寻找一个免费提供大量功能的应用程序框架,您应该去其他地方看看。

我认为您需要使用CreateWindow在Windows API中有一个非常独特的视口概念。让你开始,如果这对你来说是新闻的话。这可能与OP所说的不同,但声称该术语没有本土概念是错误的。谢谢你的回答:谢谢你的回答: