c++ - 如何正确添加状态栏?

标签 c++ windows visual-studio-2008 opengl statusbar

目前它漂浮在我渲染的窗口之上,我认为这不太好,原因如下: 1)我浪费渲染时间来渲染不可见的东西。 2) 当我无论如何都不会每帧更新整个状态栏时,它必须每帧再次渲染。

那么我如何创建一个窗口,在其中为我的状态栏留出空间,而我的任何 OpenGL 内容都无法在该区域呈现?

此时我只是调整我的视口(viewport),为状态栏创建空白空间,但这会导致我当前的做事方式出现一些问题。我必须让我的代码看起来更困惑才能让它工作。

最佳答案

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

编辑:这不是一个简单的问题。如果您不知道 Win32 下的子窗口是什么,那么您可能处于一个更好的位置。然而,要求某人为您提供 windows Windows 系统的完整解释绝非易事。

这是一个概述:

基本上您需要创建一个子窗口,这可以使用 CreateWindow 来完成创建一个具有 WS_CHILD 样式的窗口,并将其 hWndParent 参数设置为您希望新窗口成为其子窗口的窗口句柄。

当您创建窗口时,您必然会创建一个 window procedure当您调用 DispatchMessage来自您的消息泵(执行 Get/PeekMessage 然后发送消息的循环是消息泵)。在窗口过程中,您可以打开消息类型并处理发送到窗口的每条消息。

从这里您可以处理诸如设置之类的事情。您的初始窗口将有一个 WM_CREATEWM_INITDIALOG (取决于您创建的窗口类型)。您需要从那里创建子窗口(不要忘记调用 ShowWindow 使它们可见!!)。从这一点开始,您可以设置要附加到子窗口句柄 (HWND) 的 DirectX 设备。

此外,如果您希望能够重新调整窗口大小,那么您还需要考虑 WM_SIZE消息。但是,我强烈建议在开始研究之前尝试让其余部分工作,因为它变得非常复杂,因为您需要销毁并重新创建您的 DirectX 设备以使其大小合适。

无论如何,这只是一个简单的概述。希望对您有所帮助!

关于c++ - 如何正确添加状态栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2268762/

相关文章:

windows - 可以生成小型、独立的 Windows EXE 的脚本语言?

c - "Debug assertion failed"错误

c - 如何解决 "LINK : fatal error LNK1561: entry point must be defined"?

c++ - botan加密如何检查输入的密码是否正确

node.js - Npm 安装在 Windows 10 上不起作用

c++ - 为什么这些点被破坏了三次?

java - 拦截发送到 Windows 打印机的数据(使用 RedMon)

vb.net - 标记暂存站点以防止将其用作生产站点

c++ - 无法调用函数

c++ - 即使我实现了复制赋值运算符,类也是可移动构造和可赋值的