从窗口类访问应用程序变量的正确/可接受的设计是什么?

时间:2012-01-18 04:14:28

标签: c++ windows oop user-interface

我的直接上下文是Windows平台,但是当我为另一个gui主机工作时,我也可能会问同样的问题。我在相当简单的c ++ winapi工作,没有ATL / MFC。我对使用全局变量不感兴趣,而是使用“应用程序”数据执行“窗口”相关任务的更多oop接受的做法。

我已经考虑过为此实现mvvw或mvc样式模式,但在我开始之前,我想要一些社区意见,从我想象的是无数经验丰富的开发人员和设计师。

我的Application类有Window成员。 Window类是否应该使用Application引用进行设计?或者有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

Window的Win API为您提供了一个Set / GetProperty(),它允许您定义指向您想要的任何内容的指针(即您自己的窗口对象。)但是,根据经验,我知道这很慢。

另一种可能性是使用一个映射,其中Win API窗口的指针用作键,值是您的窗口对象。这速度要快得多,但是如果没有全局变量,你会把地图放在哪里?

正如塞缪尔所建议的那样,单身人士可以让你得到一个与全球物品几乎相同的物体。然后,您可以使用Win API窗口指针作为键来获取窗口对象,它将返回您的对象。

这是将传入事件映射到窗口对象所必需的。无论如何,其他任何事情都应该以相反的方式完成(正如您所期望的那样,仅在您的窗口对象上调用函数,这些函数以与系统窗口类似的方式进行映射。)

你为什么不使用Qt?它已经在C ++中,您不必担心这些细节......