在资源文件中使用宏

Using macros in resource files

本文关键字:资源 源文件      更新时间:2023-10-16

我想在我的。rc文件中使用#define字符串。例如,假设我在我的。rc文件中#include了这个。h文件:

#if defined(RED_BUILD)
  #define CAPTION_TEXT "Red Window"
  #define PROMPT_TEXT "Red Prompt"
#else
  #define CAPTION_TEXT "Blue Window"
  #define PROMPT_TEXT "Blue Prompt"
#endif

在我的。rc文件中,假设我有这样一个对话框:

IDD_Dialog DIALOG 0, 0, 286, 258
STYLE WS_POPUP | WS_CAPTION
CAPTION "First " CAPTION_TEXT " Dialog"
BEGIN
  LTEXT "First " PROMPT_TEXT, -1, 4, 80, 120, 8
  LTEXT "Second " PROMPT_TEXT, -1, 4, 90, 120, 8
END

然而,资源编译器不喜欢这样,给出一个"BEGIN expected in dialog"。有什么方法我可以哄骗预编译器来处理这个?

我目前的解决方案是#如果定义(RED_BUILD)在我的。rc文件,这工作,但不是理想的,因为我有数百个提示,我需要改变。

最好的方法是维护不同的资源文件并编译它们,而不是在一个大的"ifdef "资源文件中处理所有内容。