我正在用C ++实验Win32 API,特别是编写资源文件。现在,我的整个项目工作得很好,菜单和标题以及一切。但是,当我将这个代码添加到.rc文件的模式对话框时:
IDD_ABOUT DIALOG DISCARDABLE 0, 0, 239, 66
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "My About Box"
FONT 8, "MS Sans Serif"
BEGIN
DEFPUSHBUTTON "&OK",IDOK,174,18,50,14
PUSHBUTTON "&Cancel",IDCANCEL,174,35,50,14
GROUPBOX "About this program...",IDC_STATIC,7,7,225,52
CTEXT "An example program showing how to use Dialog Boxes\r\n\r\nby theForger", IDC_STATIC,16,18,144,33
END
Windres退出时出现以下错误:
windres: resource.rc:40: syntax error
第40行指的是:
GROUPBOX "About this program...",IDC_STATIC,7,7,225,52
根据MSDN,
GROUPBOX语句只能在DIALOGEX语句中使用,它定义控件窗口的文本,标识符,尺寸和属性。
GROUPBOX文字,id,x,y,width,height [,style [,extended-style]]
他们的例子:
GROUPBOX "Options", 101, 10, 10, 100, 100
我做错了什么?
答案 0 :(得分:4)
我认为
几乎是不言自明的只能在 DIALOGEX 中使用 声明
答案 1 :(得分:4)
如果在切换到DIALOGEX
语句之后仍然在同一行上有相同的语法错误(如@YeenFei指出的那样),我唯一能想到的是IDC_STATIC
未定义
尝试将其更改为
GROUPBOX "About this program...",-1,7,7,225,52
如果这样可以解决问题,那是因为没有定义标识符。
我搜索了Platform SDK标头(6.1和7.1)并没有找到它。我认为这可能是一个特定于MFC的标识符 - 一些快速的Google搜索建议MFC在“afxres.h”中定义它,如果它尚未定义。
IDOK
和IDCANCEL
即使您没有明确定义它们也可以工作,因为它们是在Platform SDK中定义的(在“winuser.h”中)。