c++ - 嵌套子窗口的缺点?

标签 c++ winapi

只是为了好玩,我正在开发 Mozilla XUL 的 native Win32 端口。 XUL 允许创建各种布局框(hbox、vbox、grid、deck..)的复杂嵌套结构。对于我的 Windows 实现,将它们实现为 STATIC 子窗口会很方便。因为这样我就可以使用独立于父框位置的 x 和 y 偏移来定位它们的子窗口。

但是,这种方法可能会导致某些窗口具有大量嵌套的子窗口。我想知道这种情况是否会有任何不利之处。这里有人知道吗?

最佳答案

我一直沿着这条路走下去,我不建议您实际制作很深的 Windows 层次结构。许多 Windows 辅助函数(例如,IsDialogMessage)与“传统”布局一起工作得更好。还有,Windows中的窗口是比较重的物体,多半是历史原因。因此,如果您有大量对象,您可能会遇到限制、性能问题等。

我所做的是将深层嵌套的布局表示为与实际窗口的扁平层次结构平行的常规 C++ 对象树。对象层次结构的某些节点具有它们所代表的“真实”窗口的 HWND。您告诉层次结构进行布局,节点将结果应用到相应的窗口。

例如,层次结构的根可能表示一个对话窗口,而叶节点表示子窗口。但是层次结构之间有几层了解布局的非窗口对象。

关于c++ - 嵌套子窗口的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482584/

相关文章:

c++ - 有条件地在c++中创建一个对象

c++ - 无法在 Xcode 4 中进行调试

windows - RegOpenKeyEx 在失败时返回什么错误代码?

winapi - 编码为 641 的窗口消息是什么?

c++ - 编写自定义 GetModuleHandle 函数的原因是什么?

c++ - Win32 - 将文本附加到编辑控件

.net - 一次从磁盘读取和写入大文件而不是小块的缺点?

c++ - 匹配别名模板作为模板参数

C++ char * 指针传递给函数并删除

c++ - 回调函数语法