我有一个指定对话框的资源文件。在这个对话框中,我显示应用程序的名称,版本,如果它是32位或64位版本的程序。
#ifdef WIN64
LTEXT "My App, Version 1.2.3.0 (64 bit)", IDC_APPLICATION_TITLE_TEXT, 42, 14, 251, 16, SS_NOPREFIX
#else
LTEXT "My App, Version 1.2.3.0 (32 bit)", IDC_APPLICATION_TITLE_TEXT, 42, 14, 251, 16, SS_NOPREFIX
#endif
这一切都工作得很好,直到我使用Visual Studio编辑我的任何对话框,这触发了VS保存资源文件,它剥离了我的#ifdef,只留下一个条目(32位或64位)
LTEXT "My App, Version 1.2.3.0 (64 bit)", IDC_APPLICATION_TITLE_TEXT, 42, 14, 251, 16, SS_NOPREFIX
我的问题是,当我直接在VS中编辑对话框时,是否有办法防止VS剥离#ifdefs
,或者是否有办法以可以在资源中使用的方式构造资源中使用的文本。
1条答案
按热度按时间xlpyo6sf1#
我知道的唯一方法是手动编辑文件,而不是使用资源编辑器。任何#define或#ifdef都会被资源编辑器处理,然后被删除,“后处理”rc是被保存的内容:-
编辑:你可以把编译器定向的资源放在你的.rc2文件中,资源编辑器不会处理它。至少它是“本地化”到你的RC 2文件中的条目的。
编辑2:这是我们的VS2019.RC文件的一个MFC DLL的例子,它利用了一个.RC2文件用于非appstudio部分。你的应该是类似的。
注意包含.RC2文件的两段代码,一段用于RC编译器语法,另一段用于资源编辑器本身(是的,很奇怪)。