Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Windres report a syntax error on my GROUPBOX statement?

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?

like image 329
Ken Bellows Avatar asked Feb 25 '23 07:02

Ken Bellows


2 Answers

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").

like image 108
Tadmas Avatar answered Feb 27 '23 20:02

Tadmas


I think it is pretty much self-explanatory from

can use only in a DIALOGEX statement

like image 44
YeenFei Avatar answered Feb 27 '23 21:02

YeenFei