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