MFC资源ID唯一性

MFC资源ID唯一性,mfc,Mfc,这基本上是问题的延伸 我正在处理一个旧的MFC应用程序,其中的resource.h文件似乎已经被手动编辑过,变得凌乱不堪。我看到里面有冲突的ID 我只是想确认我们是否可以拥有两个具有不同类型的相同ID的资源。 例如,我有一些类似于 IDD_1 101 IDS_2 101 或 基本上,存在使用相同ID定义但类型不同的资源 对原始问题的评论说,相同类型的资源不共享标识符。如果这是真的,它对IDR\u xxxxid也有效吗 我这样问是因为我使用的是,它似乎认为所有ID都必须是唯一的。

这基本上是问题的延伸

我正在处理一个旧的MFC应用程序,其中的resource.h文件似乎已经被手动编辑过,变得凌乱不堪。我看到里面有冲突的ID

我只是想确认我们是否可以拥有两个具有不同类型的相同ID的资源。 例如,我有一些类似于

IDD_1     101
IDS_2     101

基本上,存在使用相同ID定义但类型不同的资源

对原始问题的评论说,相同类型的
资源不共享标识符。如果这是真的,它对
IDR\u xxxx
id也有效吗


我这样问是因为我使用的是,它似乎认为所有ID都必须是唯一的。

虽然不建议使用,但它可以用于不同的类型。API使用ID和类型来标识资源。您更可能遇到的问题是MFC使用资源id引用其他资源的方式,例如工具栏按钮的帮助文本。这类错误可能非常耗时,因此您可能现在就想咬紧牙关重新编号,以便资源ID是唯一的。

这取决于代码如何使用控件。例如,如果控件是具有重复ID的按钮,则使用它没有问题。另一方面,如果控件是菜单项,则当用户单击相关事件时,会找到第一个可用ID。我认为最好重新排列重复ID。

听起来您需要一个资源重新编号工具。这里有一个免费的开源软件:

从帮助文件: VisualStudioC++项目中的Relunm ReunmBes资源ID。它是一个控制台应用程序,它被集成到IDE作为一个外部工具。它与MFC 6中的任何版本VisualStudio兼容。……资源按每个资源类型的字母顺序排序。资源类型按符合WI排序。这是Windows规则。”

请注意,此方法仅在资源ID符合Microsoft约定的情况下有效,例如,对话框ID应以IDD_uu开头,等等,请参阅TN020 ID命名和编号约定:

我这样问是因为我使用的是资源ID管理器,它似乎认为所有ID都必须是唯一的

我想我要补充的是,中有一个选项允许符号类型之间的冲突:

它在帮助主题中没有记录

IDR_1     102
IDS_2     102