问题
I'm experimenting with the Win32 API in C++, specifically with writing resource files. Now, my entire project was working just fine, menus and titles and everything. However, when I add this code for a modal dialog box to the .rc file:
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 exits with the following error:
windres: resource.rc:40: syntax error
Line 40 refers to:
GROUPBOX "About this program...",IDC_STATIC,7,7,225,52
According to MSDN,
The GROUPBOX statement, which you can use only in a DIALOGEX statement, defines the text, identifier, dimensions, and attributes of a control window.
GROUPBOX text, id, x, y, width, height [, style [, extended-style]]
Their example:
GROUPBOX "Options", 101, 10, 10, 100, 100
What am I doing wrong?
回答1:
If you still have the same syntax error on the same line after switching to a DIALOGEX
statement (as @YeenFei pointed out), the only thing I can think of is that IDC_STATIC
is not defined.
Try changing it to
GROUPBOX "About this program...",-1,7,7,225,52
If that fixes the problem, it's because the identifier isn't defined.
I did a search through the Platform SDK headers (6.1 and 7.1) and didn't find it. I think that might be an MFC-specific identifier -- some quick Googling suggests MFC defines it in "afxres.h" if it isn't already defined.
IDOK
and IDCANCEL
work even though you didn't explicitly define them because they are defined in the Platform SDK (in "winuser.h").
回答2:
I think it is pretty much self-explanatory from
can use only in a DIALOGEX statement
来源:https://stackoverflow.com/questions/4778823/why-does-windres-report-a-syntax-error-on-my-groupbox-statement