我在 Visual Studio 2005 上用 C++ 编程。我的问题涉及 .rc 文件。您可以在 .rc 文件的顶部手动放置包含指令,例如 (#include "blah.h")。但这是个坏消息,因为有人第一次在资源编辑器中打开 .rc 文件时,它会被覆盖。我知道有一个地方可以进行这些定义,这样它们就不会被丢弃,但我找不到它,谷歌搜索也没有帮助。有人知道吗?
5 回答
以正常方式将您的#include 添加到文件中,但也将其添加到文件中的三个“TEXTINCLUDE”部分之一,如下所示:
2 TEXTINCLUDE
BEGIN
"#include ""windows.h""\r\n"
"#include ""blah.h\r\n"
"\0"
END
请注意以下细节:
- 每行都包含在引号中
- 使用成对的引号,例如"" 将引号字符内联
- 每行以 \r\n 结束
- 以“\0”结束 TEXTINCLUDE 块
当资源编辑器重写文件时,放置在“1 TEXTINCLUDE”块中的语句将被写入 .rc 文件的开头。放置在 2 和 3 块中的语句紧随其后,因此您可以通过使用适当编号的块来保证相对的包含文件顺序。
如果您现有的 rc 文件尚未包含 TEXTINCLUDE 块,请使用解决方案资源管理器窗格中的新文件向导添加新的 rc 文件,然后将其用作模板。
您希望在编译时包含资源(MSDN)。
在 Visual Studio IDE 中,右键单击 .rc 文件(在“资源视图”面板中),然后从快捷菜单中选择“资源包含”。当对话框打开时,使用它的“编译时指令”区域输入您想要包含在 .rc 文件中的任何内容。例如,如果您希望 64 位和 32 位构建使用不同的图标,您可以为每个构建包含适当的资源文件,如下所示:
#ifdef WIN64
#include "Icons64.rc"
#else
#include "Icons32.rc"
#endif
值得注意的是,这些定义默认情况下没有在资源编译器中设置,因此对于您的 64 位构建,请确保将 /DWIN64 添加到 rc 构建中。
所有血腥细节都可以在MFC Technote #35中找到。
-罗恩
我不完全确定您为什么要这样做,但是手动修改资源文件可能不是一个好主意。
我相信 VC++ 用于全局可访问值的一般做法是在 stdafx.h 中定义它们(至少我是这么看的),或者创建类似“globals.h”头文件的东西,并将其包含在你的任何位置需要它。不过,这实际上取决于您要完成的工作。