在资源文件中使用宏

时间:2011-12-27 16:30:33

标签: c++ windows visual-studio-2008

我想在我的.rc文件中使用#define'd strings。例如,假设我在.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”。有什么方法可以哄骗预编译器来处理这个问题吗?

我当前的解决方法是在我的.rc文件中 #if defined(RED_BUILD),这有效,但并不理想,因为我有数百个需要更改的提示。

1 个答案:

答案 0 :(得分:0)

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