Visual c++ 如何在VC++;?

Visual c++ 如何在VC++;?,visual-c++,mfc,Visual C++,Mfc,我有两个项目,Project1和Project2,两个项目都有rc文件(resource.h), 我希望将两个资源合并到一个项目中,例如,在Project1中,我可以使用两个资源:Project1的rc和Project2的rc; 我该怎么办?谢谢可以通过使用前面提到的textclude资源指令来实现 基本思想是在每个其他rc文件中包含所需的rc文件,就像我们包含头文件一样 例如,在Project1.rc中,可以包括Project2.rc,如下所示 #ifdef APSTUDIO_INVOKED

我有两个项目,Project1和Project2,两个项目都有rc文件(resource.h), 我希望将两个资源合并到一个项目中,例如,在Project1中,我可以使用两个资源:Project1的rc和Project2的rc;
我该怎么办?谢谢

可以通过使用前面提到的textclude资源指令来实现

基本思想是在每个其他rc文件中包含所需的rc文件,就像我们包含头文件一样

例如,在Project1.rc中,可以包括Project2.rc,如下所示

#ifdef APSTUDIO_INVOKED

// ... other directives if any

3 TEXTINCLUDE 
BEGIN
    // ... other definitions
    "#include ""Project2\\Project2.rc""\0"
END

#endif    // APSTUDIO_INVOKED


//... other resource entries


#ifndef APSTUDIO_INVOKED

#include "Project2\\Project2.rc"

#endif    // not APSTUDIO_INVOKED

现在修改Project2.rc以包括Project1.rc,如上图所示。

普通拖放是否有效?我记得在一个项目中提取了两个.rc文件。或者,查看是否可以右键单击并导入现有的rc文件。是否尝试在Visual Studio中分别编辑这两个.rc文件?然后,您可以剪切/复制/粘贴对话框、菜单等。您可以执行纯文本合并-只需复制粘贴任何相关部分。请注意,合并取决于资源类型,例如,对于对话框,您需要复制对话框定义;对于文本字符串,您需要将所有条目合并到一个表中;对于版本,您需要选择与之相关的任何版本节(我不认为在一个.rc文件中可以有两个版本节)。此外,确保您的
resource.h
文件已合并,或一个文件包含在另一个文件中,以便定义所有资源标识符。请注意,您可能需要解决编号冲突。.rc文件包含的某些节仅存在一次,例如版本或包含VS资源编辑器的节。不确定在同一个文件中有两个副本时会发生什么。可能需要修剪其中一个文件以仅保留这些文件的一个副本。如您所知,任何RC资源条目都将有其自己的唯一ID。如果有两个(不同)资源具有相同ID,则资源编译器将报告“复制资源”错误。当遵循上述策略时,不需要修剪。嗯,不,不需要。资源ID并不是凭空出现的。它们都在resource.h文件中定义。因此,如果您只是合并两个.rc文件,您将遇到某些问题。首先,不能保证resource.h定义了新添加的.rc文件所使用的ID。其次,您需要确保新ID的数值与现有ID的数值不同。最后,尝试在组合的.rc中包含两个版本信息副本,看看会发生什么。当Project1.rc中包含Project2.rc时,Project2的resource.h文件也将包含在内。这是因为Project2.rc本身包含语句include“resource.h”。引用微软,“VisualC++将一个R.RC资源文件和一个对应的.h头文件管理为紧密耦合的文件对。”因此,有一种保证。至于第二个问题,如前所述,Microsoft促进了共享资源头文件的使用。为避免版本冲突,应将其保存在非共享的.RC文件中。