VS/MFC 还在使用“afx_msg”装饰器之类的东西吗?

问题描述 投票:0回答:4

我正在开发一个 MFC 程序,该程序可以追溯到 VC6 时代。当时有一个类向导,它使用一堆装饰器和注释中的标记来解析类文件。

例如,它将在其维护的消息处理程序前面插入

afx_msg
。它将用
//{{AFX_MSG_MAP(TheApp)
}}AFX_MSG_MAP
注释标记代码块,以帮助它找到它想要处理的消息映射部分。

AFAIK,这不再需要了。除此之外,类向导有很多缺点,我们必须对这些托管块进行大量手动编辑,而且我们从来没有经常使用过它。

还有其他理由继续使用

afx_msg
及其类似产品吗?

c++ visual-studio mfc
4个回答
12
投票

afx_msg
仍然存在,但始终纯粹提供信息。正如你所说的装饰器。它始终是
#defined
作为空字符串。

自 VS2003 以来,不再需要

{{

}}
 标记:VS 现在足够智能,可以将事物放在正确的位置,而无需依赖这些标记。您会注意到 VS2003+ 在它创建的项目中不再包含这些行。


2
投票
据我所知,

afx_msg

不再使用。另一个标记用于帮助 CW 确定放置内容的位置,其中一些标记可能仍会使用(例如:.cpp 文件中的消息映射位置)。头文件中的那些删除可能更安全,但我不会随意删除它们。

您可以做的一件事是:在当前的 VS 版本中启动一个新的虚拟 MFC 项目,添加一个窗口类和一些处理程序,并观察当前创建的符号。任何未放入的东西可能不再使用,而仍然插入的任何东西可能仍以某种形式使用)。

PS:MS 很清楚当前 CW 编辑的问题,并且我被告知这些问题将在 VS2010 中得到很大程度的解决……我们拭目以待。


1
投票
据我所知,这些不再需要了。 VS2008中的类向导将不再生成注释,并且不会使用以前版本生成的现有注释。类向导仍然会生成 afx_msg 装饰器,但是它们不会被使用。

处理 VC6 时代的代码时,我的一般规则是删除所有注释,但保留 afx_msg 装饰器。我发现装饰器在阅读代码时很有用,可以指出方法是消息处理程序。


0
投票
在VS2008中,afx_msg是一个空的#define。我已经从我们从 VC6 升级到 2005 的应用程序中删除了所有其他 ClassWizard 插入的垃圾。当然,我也根本不使用 ClassWizard。

© www.soinside.com 2019 - 2024. All rights reserved.