为什么Windres在我的GROUPBOX语句中报告语法错误? 我正在用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在我的GROUPBOX语句中报告语法错误? 我正在用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,c++,winapi,resources,groupbox,C++,Winapi,Resources,Groupbox,Windres退出时出现以下错误: windres: resource.rc:40: syntax error 第40行是指: GROUPBOX "About this program...",IDC_STATIC,7,7,225,52 根据, GROUPBOX语句(只能在DIALOGEX语句中使用)定义控件窗口的文本、标识符、维度和属性 分组框文本、id、x、y、宽度、高度[、样式[、扩展样式]] 他们的例子是: GROUPBOX "Options"
windres: resource.rc:40: syntax error
第40行是指:
GROUPBOX "About this program...",IDC_STATIC,7,7,225,52
根据,
GROUPBOX语句(只能在DIALOGEX语句中使用)定义控件窗口的文本、标识符、维度和属性
分组框文本、id、x、y、宽度、高度[、样式[、扩展样式]]
他们的例子是:
GROUPBOX "Options", 101, 10, 10, 100, 100
我做错了什么?我认为这在我看来是不言自明的 只能在对话框中使用 声明
如果在切换到
DIALOGEX
语句(正如@YeenFei所指出的)后,同一行仍然存在相同的语法错误,那么我唯一能想到的是IDC\u STATIC
没有定义
试着把它改成
GROUPBOX "About this program...",-1,7,7,225,52
如果这解决了问题,那是因为没有定义标识符
我搜索了平台SDK标题(6.1和7.1),但没有找到它。我认为这可能是一个MFC特定的标识符——一些快速的谷歌搜索建议MFC在“afxres.h”中定义它,如果它还没有定义的话
IDOK
和IDCANCEL
即使您没有明确定义它们也可以工作,因为它们是在平台SDK(在“winuser.h”中)中定义的。Ha,我错过了,谢谢。但不幸的是,它没有解决这个问题。IDC_STATIC也在winuser中定义。h@KenB:不是,不是。它是一个控制值,通常取自特定于项目的资源.h
。查看Windows平台SDK中的任何一个示例程序。我刚刚使用了grep,发现它不仅在winuser.h中定义,而且在afxres.h中也定义了。我不知道为什么,但定义IDC_STATIC出于某种原因修复了它。我使用的是MinGW 4.5.2。下面是我在进一步检查头文件后得出的结论。Winuser.h确实有IDC_静态文档;但是,它实际上没有定义,因为它被一个#if 0语句包围,并带有一条注释:“这应该是由程序使用w32api头中没有定义的它来定义的。我把它放在这里是为了文档的目的。”