在C++(MFC)资源文件中连接字符串和常量

问题描述:

我有一个MFC和一个资源文件的C++项目。在我的About对话框中,我想添加一个包含程序版本的常量。在C++(MFC)资源文件中连接字符串和常量

IDD_ABOUTBOX DIALOG DISCARDABLE 34, 22, 237, 65 
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 
CAPTION "About Monitor" 
FONT 8, "MS Sans Serif" 
BEGIN 
    ICON   IDR_MAINFRAME, IDC_STATIC, 11, 22, 20, 20 
#ifdef __64BIT__ 
    LTEXT   "Communication Monitor V" APP_VERSION " x86_64", IDC_STATIC, 40, 13, 150, 8 
#else 
    LTEXT   "Communication Monitor V" APP_VERSION " x86_32", IDC_STATIC, 40, 13, 150, 8 
#endif //__64BIT__ 
    DEFPUSHBUTTON "OK", IDOK, 200, 6, 32, 14 
END 

如果它看起来像这样,我得到一个错误

1>src\monitor.rc(80): error RC2116: expecting number for ID 
1>src\monitor.rc(80): error RC2108: expected numerical dialog constant 

我也试图与一个+

IDD_ABOUTBOX DIALOG DISCARDABLE 34, 22, 237, 65 
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 
CAPTION "About Monitor" 
FONT 8, "MS Sans Serif" 
BEGIN 
    ICON   IDR_MAINFRAME, IDC_STATIC, 11, 22, 20, 20 
#ifdef __64BIT__ 
    LTEXT   "Communication Monitor V" + APP_VERSION + " x86_64", IDC_STATIC, 40, 13, 150, 8 
#else 
    LTEXT   "Communication Monitor V" + APP_VERSION + " x86_32", IDC_STATIC, 40, 13, 150, 8 
#endif //__64BIT__ 
    DEFPUSHBUTTON "OK", IDOK, 200, 6, 32, 14 
END 

来连接,但我得到的错误

1>src\monitor.rc(80): error RC2237: numeric value expected at 3.1.4.1 

我的下一次尝试w至于把它称为我在rc-file的顶部定义的函数,但是错误与上述两者类似。

是否可以在LTEXT中连接rc文件中的字符串和变量?

+0

请显示monitor.rc的第80行。 –

+2

忘记我以前的评论。你不可以做这个。动态显示版本。这需要在关于对话框的OnitiDialog函数中有3-4行代码。 –

+1

@MichaelWalz Thx为您的答案。我在我的OnInitDialog函数中实现了它 – Premox

#define HSTR(N) #N 
#define STR(N) HSTR(N) 
#define VER_TXT(N) Communication Monitor V##N x86_32 
#define VER_STR(N) STR(VER_TXT(N)) 

适用于VS2013。也应该在VS2010上工作。

+0

保留供实现使用的符号,其中包含双下划线或以下划线开头且后跟大写字母的符号(或者以全局范围下的下划线开头的符号)。 – IInspectable

+0

@IInspectable我已更新答案。 – ZDF