在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文件中的字符串和变量?
答
#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
请显示monitor.rc的第80行。 –
忘记我以前的评论。你不可以做这个。动态显示版本。这需要在关于对话框的OnitiDialog函数中有3-4行代码。 –
@MichaelWalz Thx为您的答案。我在我的OnInitDialog函数中实现了它 – Premox