c++ - WinAPI - 如何组织大量的 HWND 对象?

标签 c++ winapi organization hwnd winmain

当我推进我的第一个 winapi UI 时,我发现自己在我的 WinMain 文件中创建了大量令人不舒服的 HWND 变量堆栈:

HWND foo;
HWND bar;
HWND baz;
HWND etc;

int WINAPI WinMain(...) {}

当然,这些变量在文件其余部分的函数中使用 - 例如消息循环 - 因此它们必须是可访问的。

对于我相对较小的 UI,我将堆叠大约 30 个 HWND,以便它们处于可见范围内。这让我非常怀疑我做错了。

这是应该发生的事情,还是有更实用的方法来组织它?

最佳答案

您有几种解决方案,具体取决于您的程序。

  1. 您可以将所有这些句柄放在一个或多个容器中,例如 std::vector
  2. 您可以像克里斯建议的那样映射它们。
  3. 如果您的程序变大,您可能希望将它们组织成逻辑单元。例如,如果这些窗口中的 15 个用于一半的逻辑,另外 15 个用于另一半(比如选项卡内的控件),那么您可能希望以某种方式对这些控件进行分组(文件、类,任何最符合逻辑的方式) ).

关于c++ - WinAPI - 如何组织大量的 HWND 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13243343/

相关文章:

c++ - 引用类模板参数和 constexpr 类成员的转换运算符

c++ - 了解 const 自动指针

C++,从 `int*' 到 `int' 的错误无效转换

c++ - 将 ETW 事件发送到全局 "Application"日志

inheritance - 我如何组织这段从嵌入式类型重新定义方法的 Go 代码,以减少冗余并提高可维护性?

c++ - MFC IE 嵌入式网络浏览器古怪

c++ - CreateProcess的第二个参数应该是什么?

c++ - 有什么方法可以使用 ASYNC MessageBox 吗?

ruby - ruby gems/模块的命名空间扩展的约定是什么?

多平台多语言项目的Golang代码组织