在.rc文件中复制TEXTINCLUDE部分

时间:2012-08-09 08:09:03

标签: c++ visual-studio winapi resource-file

在我的.rc文件中,我发现我有3个TEXTINCLUDE部分重复两次,内容不同。当我打开“资源包含”时,仅显示前3个部分中的包含。很久以前我已经调整了.rc,所以它可能是剩下的。

我可以安全地删除后面的3个部分吗?

我已经从我的.rc文件粘贴了这个,你可以看到TEXTINCLUDE部分是如何重复的(即“3 TEXTINCLUDE”后跟“1 TEXTINCLUDE”。

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "#include ""res/Pngs.h""\r\n"
    "#include ""res/PngsNag.h""\0"
END

3 TEXTINCLUDE 
BEGIN
    "#include ""afxres.rc""      // Standard components\r\n"
    "#include ""res/MyProject.rc2""\r\n"
    "#include ""res/Pngs.rc2""\r\n"
    "#include ""res/PngsNag.rc2""\0"
END

1 TEXTINCLUDE 
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE 
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE 
BEGIN
    "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
    "#define _AFX_NO_OLE_RESOURCES\r\n"
    "#define _AFX_NO_TRACKER_RESOURCES\r\n"
    "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
    "\r\n"
    "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
    "#ifdef _WIN32\r\n"
    "LANGUAGE 9, 1\r\n"
    "#pragma code_page(1252)\r\n"
    "#endif //_WIN32\r\n"
    "#include ""res\\MyProject.rc2""  // non-Microsoft Visual C++ edited resources\r\n"
    "#include ""afxres.rc""         // Standard components\r\n"
    "#endif\r\n"
    "\0"
END

2 个答案:

答案 0 :(得分:8)

这是由Visual Studio内置的图形资源编辑器生成的gunk。它在运行时没有任何影响,它只是为编辑器保存状态。当你弄乱它时,你将面临破坏编辑器的严重风险。如果您从不使用资源编辑器并始终使用文本编辑器管理资源,那也没关系。

MSDN article中有一些背景信息:

  

下面介绍Visual C ++如何在.RC文件中维护此信息。您不需要此信息来使用Visual C ++,但它可以增强您的理解,以便您可以更自信地使用Set Includes功能。

     

以上三种类型的Set Includes信息中的每一种都以两种形式存储在.RC文件中:(1)作为#include或资源编译器可解释的其他指令,以及(2)作为特殊的TEXTINCLUDE资源,只能解释为Visual C ++。

     

TEXTINCLUDE资源的目的是以一种在Visual C ++的“设置包含”对话框中可以显示的形式安全地存储“设置包含”信息。 TEXTINCLUDE是Visual C ++定义的资源类型。 Visual C ++识别具有资源标识号1,2和3的三个特定TEXTINCLUDE资源:

TEXTINCLUDE resource ID     Type of Set Includes information
        1                   Symbol Header File
        2                   Read-Only Symbol Directives
        3                   Compile-Time Directives

答案 1 :(得分:1)

只需要一组TEXTINCLUDE。你只需要决定什么样的设置对你有用。