如何:在编译时包含资源 (C++)

默认情况下,所有资源都位于一个资源脚本 (.rc) 文件中,但可以出于多种原因将资源放置在主 .rc 文件之外的文件中:

  • 向保存 .rc 文件时不会删除的资源语句添加注释。

  • 包含已开发和测试并且无需进一步修改的资源。 包含在内但没有 .rc 扩展名的任何文件都不可通过资源编辑器进行编辑。

  • 包含不同项目正在使用的资源,或属于源代码版本控制系统的资源。 这些资源必须存在于一个中心位置,在该位置中,修改将影响所有项目。

  • 包括采用自定义格式的资源(如 RCDATA 资源)。 RCDATA 资源具有特殊要求,其中不能将表达式用作 nameID 字段的值。

如果现有 .rc 文件中有一些部分满足以上任何条件,请将这些部分置于一个或多个单独的 .rc 文件中,并使用“资源包括”对话框将它们包含在项目中

资源包括

可以通过在“资源包括”对话框的“编译时指令”框中列出相关资源,在编译时将其他文件中的资源添加到你的项目。 使用“资源包括”对话框,修改将所有资源存储在项目 .rc 文件中以及将所有符号存储在 Resource.h 中的项目环境正常工作安排

若要开始,请在资源视图中右键单击 .rc 文件打开“资源包括”对话框,选择“资源包括”,并注意以下属性

properties 说明
符号头文件 允许更改头文件的名称,头文件是存储资源文件的符号定义的位置。

有关详细信息,请参阅更改符号头文件的名称
只读符号指令 允许包含含有不应修改的符号的头文件。

例如,要与其他项目共享的符号文件。 这也可以包括 MFC .h 文件。 有关详细信息,请参阅包括共享(只读)或计算符号
编译时指令 允许包括所创建的资源文件,并可从主资源文件中的资源分别进行编辑,包含编译时指令(比如那些有条件地包括资源的指令),或者包含自定义格式的资源。

还可以使用“编译时指令”框包括标准 MFC 资源文件

注意

这些文本框中的条目将由 TEXTINCLUDE 1TEXTINCLUDE 2TEXTINCLUDE 3 分别进行标记后显示在 .rc 文件中。 有关详细信息,请参阅 TN035:在 Visual C++ 中使用多个资源文件和头文件

使用“资源包括”对话框更改资源文件后,必须关闭并重新打开 .rc 文件,以使更改生效

编译时在项目中包含资源

  1. 将资源置于具有唯一文件名的资源脚本文件中。 不要使用 projectname.rc,因为这是用于主资源脚本文件的文件名称

  2. 右键单击资源视图中的 .rc 文件,然后选择“资源包括”

  3. 在“编译时指令”框中,添加 #include 编译器指令以在开发环境中将新资源文件包含在主资源文件中

以此方式包含的文件中的资源仅在编译时成为可执行文件的一部分,在处理项目的主 .rc 文件时,无法对其进行编辑或修改。 需要单独打开包含的 .rc 文件,并且无法通过资源编辑器编辑没有 .rc 扩展名的任何包含在内的文件。

为特定资源 (.rc) 文件指定包含目录

  1. 在“解决方案资源管理器”中右键单击 .rc 文件,然后选择“属性”

  2. 选择左侧窗格中的“资源”节点,然后在“附加包含目录”属性中指定任何附加的包含目录

在资源中查找符号

  1. 转到菜单,选择“编辑”>“查找符号”

    提示

    若要在搜索中使用正则表达式,请在“编辑”菜单中选择“在文件中查找”,而不是“查找符号”。 在“查找”对话框中选择“使用: 正则表达式”复选框,然后在“查找内容”框中,可以从下拉列表中选择正则搜索表达式。 从此列表中选择表达式时,将使用“查找内容”框中的搜索文本来替换它

  2. 在“查找内容”框中,从下拉列表中选择以前的搜索字符串或键入要查找的加速键,例如 ID_ACCEL1

  3. 选择任意“查找”选项,然后选择“查找下一个”

注意

无法搜索字符串、快捷键或二进制资源中的符号。

要求

Win32

另请参阅

资源文件
如何:创建资源
如何:管理资源