4 Stimmen

Warum meldet Windres einen Syntaxfehler bei meiner GROUPBOX-Anweisung?

Ich experimentiere mit der Win32-API in C++, insbesondere mit dem Schreiben von Ressourcen-Dateien. Mein gesamtes Projekt funktionierte einwandfrei, mit Menüs und Titeln und allem. Wenn ich jedoch diesen Code für ein modales Dialogfeld zur .rc-Datei hinzufüge:

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 wird mit dem folgenden Fehler beendet:

windres: resource.rc:40: syntax error

Zeile 40 bezieht sich auf:

GROUPBOX "About this program...",IDC_STATIC,7,7,225,52

Selon MSDN ,

Die GROUPBOX-Anweisung, die Sie nur in einer DIALOGEX-Anweisung verwenden können, definiert den Text, den Bezeichner, die Abmessungen und die Attribute eines Kontrollfensters.

GROUPBOX text, id, x, y, width, height [, style [, extended-style]]

Ihr Beispiel:

GROUPBOX "Options", 101, 10, 10, 100, 100

Was mache ich falsch?

4voto

YeenFei Punkte 3080

Ich denke, es ist so ziemlich selbsterklärend, von

kann nur in einer DIALOGEX Anweisung

4voto

Tadmas Punkte 6030

Wenn Sie denselben Syntaxfehler in derselben Zeile immer noch haben, nachdem Sie zu einer DIALOGEX Anweisung (wie @YeenFei bemerkte), ist das einzige, was mir einfällt, dass IDC_STATIC ist nicht definiert.

Versuchen Sie, es zu ändern in

GROUPBOX "About this program...",-1,7,7,225,52

Wenn das Problem damit behoben ist, liegt es daran, dass der Bezeichner nicht definiert ist.

Ich habe die Platform SDK-Header (6.1 und 7.1) durchsucht und sie nicht gefunden. Ich denke, dass könnte ein MFC-spezifischer Bezeichner sein - einige schnelle Googeln schlägt MFC definiert es in "afxres.h", wenn es nicht bereits definiert ist.

IDOK et IDCANCEL funktionieren, auch wenn Sie sie nicht explizit definiert haben, da sie im Platform SDK (in "winuser.h") definiert sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X