【发布时间】:2012-11-06 02:03:30
【问题描述】:
当我推出我的第一个 winapi UI 时,我发现自己在我的 WinMain 文件中创建了一大堆令人不舒服的 HWND 变量:
HWND foo;
HWND bar;
HWND baz;
HWND etc;
int WINAPI WinMain(...) {}
当然,这些变量在文件其余部分的函数中使用 - 例如消息循环 - 所以它们必须是可访问的。
对于我相对较小的 UI,我会堆积 30 个 HWND,以便它们处于可见范围内。这让我非常怀疑我做错了。
这是应该发生的事情,还是有更实用的方法来组织它?
【问题讨论】:
-
我可能会选择
std::map<std::string, HWND>。这样你就可以给每个人一个名字,这样你就可以在分组的同时轻松识别它。 -
我认为像 hashmap 这样的东西会很有用,但它似乎有点……主观。它似乎增加了另一个级别的复杂性(记住键名),但也将一大堆东西留在了非常公开的范围内。这样可以吗?
-
为什么不让这些
HWND变量成为控制相应对象的类的成员呢? -
@David - 嗯,我还没有想过要迁移到 MVC,但看起来这将是驱动程序。值得一试。这可能就是我正在寻找的解决方案。
-
我对我认为是 MVC 的东西的破解已经太久了。下一个人的注意事项 - 使用
WndProc作为类成员函数是一个真正的熊,尤其是对于超类。我在几个小时后放弃了,这绝对高于我的工资等级(必须了解更多关于钩子的信息)。所以,我将我的顶层窗口分成了几个“面板”,每个面板都有一个控件类型的类,可以将它们的 HWND 整齐地分组,并且仍然可以访问它们以调整大小和处理消息。
标签: c++ winapi organization hwnd winmain