在MFC项目中使用多个资源文件

时间:2016-04-26 18:19:46

标签: c++ user-interface mfc resources

我在VS2015的MFC(C ++ 11)中工作,我有一套独立的GUI,我想在多个项目中使用它们。我知道这可以通过创建一个.rc文件来实现,该文件可以基于以下内容包含在每个项目的主.rc文件中: Using Multiple Resource Files

虽然从概念上讲我理解它的描述,但我找不到创建独立.rc文件和第二个资源文件的任何示例。我创建了一个测试资源头文件,该文件在我的解决方案中全局存在,并尝试使用Resource Includes包含它,但即使使用路径也无法找到它。有人能指出我如何设置它的链接或示例吗?

3 个答案:

答案 0 :(得分:4)

我有.rci文件,从未与资源编辑器一起使用。它们与#include一起使用。

或者我有特殊的.rc文件,包含标准符号和消息,用于更大的项目集。

我只是将第二个rc文件添加到项目中。这个资源文件只是#include'进入项目的主.rc文件。

防止项目中的错误。第二个.rc文件从构建中排除。在解决方案资源管理器中,右键单击该项目。并将Exclude from Build设置为YES。

注意ID的冲突。

答案 1 :(得分:2)

我是这样做的。如果删除要包含在解决方案资源管理器中的资源文件夹中的资源,它将在项目中显示为单独且可编辑的资源

Resource View with multiple rc files

当然,您必须在项目中包含标题。因此请注意您的ID的冲突。您可能必须转到新资源并使用通过调整_APS_NEXT_XXX_VALUE而预留的ID。我从未使用过“资源包含”和“#39;”。如TN035中所述。我只是检查了位图的相对路径似乎工作正常。希望有所帮助。

答案 2 :(得分:0)

我知道这样做的两种方法。我将演示它,假设您需要管理应用程序支持多种语言的事实。

用户@xMRi已经描述了第一个,并且根据您的配置/平台,您将只包含有问题的.rc。例如,您有配置:

  • EN_GB
  • fr_FR时
  • PT_PT
  • de_DE这个

和文件

  • Project_en_GB.rc
  • Project_fr_FR.rc
  • Project_pt_PT.rc
  • Project_de_DE.rc

为了实现这一目标,除了在VS工具栏组合中当前选择的配置外,您需要从它们的所有内容中排除。如果选择了fr_FR,请从除Project_fr_FR.rc文件之外的所有其他.rc的构建中排除,并在每个配置上应用相同的逻辑。

另一种是为每种语言都有一个VS项目(vcproj),其中每个项目都包含.rc文件。

项目

  • Project_en_GB
  • Project_fr_FR
  • Project_pt_PT
  • Project_de_DE

分别包含

  • Project_en_GB.rc
  • Project_fr_FR.rc
  • Project_pt_PT.rc
  • Project_de_DE.rc

在工作中我们使用两者(我之前从未听说过.rci文件;我们使​​用第一个文件使用普通.rc文件),具体取决于项目。