从窗口类访问应用程序变量的正确/可接受的设计是什么
What is the proper/accepted design of accessing application variables from a window class?
我的直接上下文是Windows平台,但在为另一个gui主机使用ui时,我可能也会问同样的问题。我使用的是相当普通的c++winapi,没有ATL/MFC。我对使用全局变量不感兴趣,而是对使用"应用程序"数据执行"窗口"相关任务这一更为oop所接受的实践。
我曾考虑过实现mvvw或mvc风格的模式,但在我开始之前,我想从无数经验丰富的开发人员和设计师那里获得一些社区意见。
我的应用程序类有Window成员。Window类是否应该使用应用程序引用进行设计?或者还有比这更好的方法吗?
窗口的Win API为您提供了一个Set/GetProperty(),它允许您定义一个指向您想要的任何对象(即您自己的窗口对象)的指针。然而,根据经验,我知道这相当慢。
另一种可能性是使用一个映射,其中Win API窗口的指针用作键,值是您的窗口对象。这要快得多,但如果你没有任何全局,你会把地图放在哪里?
正如Samuel所建议的,singleton允许您获得一个与全局对象几乎相同的对象。然后,您可以使用Win API窗口指针作为键来获取窗口对象,它将返回您的对象。
这是将传入事件映射到窗口对象所必需的。无论如何,其他一切都应该以另一种方式进行(正如你所期望的,只在你的窗口对象上调用函数,这些函数以与系统窗口类似的方式映射。)
你为什么不使用Qt?它已经在C++中了,你不必担心这些细节。。。
相关文章:
- B不接受8作为输入的是什么?C++
- 将(临时的?)std::string传递给使用它来构造一个接受副本的对象的函数的最佳方法是什么?
- 是什么将程序集转换为实际可执行的材料
- 对于可重定位的多平台安装,理想的 cmake 安装目录结构是什么?
- 在发布模式下崩溃,但如果可调试为 true - 不是..什么是可能的问题
- 在C 中的Boost库中可辍学的蓄能器的优势是什么?
- 如果 std::addressof 是 &.什么是 *& 的可读版本?
- 在编程中某些东西是可传递的是什么意思
- 当某些错误可以接受时,顺序加载存储原子的内存顺序应该是什么
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 访问说明符不会更改可访问性级别.这是什么意思
- 具有多个非可选参数的转换构造函数是什么样子的?为什么它有意义
- 可视化是什么是使用C 将附加扫描仪(Twain设备)列表列出到计算机的最佳方法
- 当这个构造函数接受一个初始值设定项列表并委托一个向量时,是什么导致它委托给自己
- strlen()的可选项是什么
- 使用外部可执行文件作为管道的Qt 'way'是什么?
- 可移植fstream文件路径的正确语法是什么
- 此语法的(可搜索)名称是什么
- 从窗口类访问应用程序变量的正确/可接受的设计是什么
- 在c++字符串字面量中使用的可接受的自定义转义字符是什么?