【发布时间】:2013-03-14 21:31:15
【问题描述】:
我最近一直在使用 Win32,但我对它很陌生,需要一些有关组织的建议。在 C++ 中,虽然在语法上声明全局变量是可行的,但我一直觉得这是草率的,因为变量可以在任何地方修改,因此跟踪对它的更改变得更加困难。
在我的 Win32 项目中,我有几个变量需要在多个地方进行修改。例如,一个这样的变量在 WndProc 函数和对话过程函数中。由于它的使用方式,我可以简单地使用 WndProc 中的实际值,然后使用 DialogBoxParam 调用对话框,并通过 lParam 值将值传递给对话框。
但是,还有其他值,例如我用于绘图的某些位图或在多个不同窗口消息调用中使用的变量,其中值需要在 WndProc 函数的多个实例或多个实例中保留职能。我可以控制我创建的函数的参数,但是如果我需要将一个变量传递给 WndProc 函数,以便我可以使用它而不考虑多个不同的窗口消息,该怎么办?如果我需要传入多个值怎么办?
到目前为止,我只是将所有内容都设为全局,并且它可以工作,但对我来说感觉很草率......但我知道,按照惯例,有些变量通常是全局的 - 例如主窗口和实例变量。
大家觉得呢?
【问题讨论】:
-
是的:全局变量是“坏的”。是的,在经典的 Win32/C 编程中,全局变量通常或多或少是不可避免的。这是你的问题吗?
标签: c++ winapi organization