gpt4 book ai didi

c++ - 使用 Win32 进行组织的典型约定是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:53 24 4
gpt4 key购买 nike

我最近一直在使用 Win32,但我对它还很陌生,需要一些有关组织的建议。在 C++ 中,虽然声明全局变量在语法上是有效的,但我总觉得这是草率的,因为变量可以在任何地方修改,因此跟踪它的变化变得更加困难。

在我的 Win32 项目中,我有几个变量需要在多个地方进行修改。例如,一个这样的变量在 WndProc 函数中,也在对话过程函数中。由于它的使用方式,我可以简单地使用WndProc中的实际值,然后使用DialogBoxParam调用对话框,并通过lParam值将值传递给对话框。

但是,还有其他值,例如我用于绘图的某些位图或在多个不同窗口消息调用中使用的变量,这些值需要在 WndProc 函数的多个实例或多个实例中保留功能。我可以控制我创建的函数的参数,但是如果我需要将一个变量传递给 WndProc 函数以便我可以使用它而不管多个不同的窗口消息怎么办?如果我需要传入多个值怎么办?

到目前为止,我只是将所有内容都设置为全局变量,并且它可以正常工作,但对我来说感觉很草率……但我知道一些变量通常是全局变量,这是约定俗成的——比如主窗口和实例变量。

大家怎么看?

最佳答案

如果您有具体的代码示例,可能会有所帮助。但我认为你在谈论生命周期——你有一个资源(比如位图),你需要多次引用它以响应不同的 Windows 消息。你可以让它全局化,是的,但我同意这很草率。

那么谁创建了窗口?可能是您的“App”类或类似的东西。由于该类的生命周期在逻辑上比窗口长,因此它可以容纳窗口所需的资源。

或者更好的方法是创建一个“Window”类。您的 App 实例化了一个 Window 对象。 Window 对象创建 Win32 窗口并保存 HWND(您现在已经将其从 App 中抽象出来,因此它不需要知道那些血淋淋的细节),并且Window 实例可以保存位图资源。

关于c++ - 使用 Win32 进行组织的典型约定是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com