2011-01-24 29 views
2

私はC++のWin32 APIを使って、具体的にはリソースファイルを書きながら実験しています。さて、私のプロジェクト全体はうまくいっていました、メニューとタイトルとすべて。しかし、私は.rcファイルにモーダルダイアログボックスのためにこのコードを追加する場合: なぜ私のGROUPBOX文にWindresが構文エラーを報告していますか?

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は、次のエラーで終了し

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

windres: resource.rc:40: syntax error 

ライン40が参照します

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]]

例:

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

私は間違っていますか?

答えて

3

からほとんど自明だと思います私は考えることができることはIDC_STATICは定義されていません。

は、識別子が定義されていないので、それはだ、それが問題を修正した場合

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

にそれを変更してみてください。

Platform SDKヘッダー(6.1および7.1)で検索しても見つかりませんでした。私はそれがMFC固有の識別子かもしれないと思う - いくつかの迅速なグーグルは、定義されていない場合、 "afxres.h"でそれを定義することを示唆している。

IDOKおよびIDCANCELは、プラットフォームSDK(「winuser.h」内)で定義されているため、明示的に定義していなくても機能します。

+0

IDC_STATICもwinuser.hで定義されています –

+0

@KenB:そうではありません。これは通常、プロジェクト固有の 'resource.h'から取られる制御値です。 Windows Platform SDKの多数のサンプルプログラムを参照してください。 –

+0

私はgrepを使い、winuser.hだけでなくafxres.hでも定義されていることを発見しました。 –

4

(@YeenFeiが指摘したように)あなたはまだDIALOGEX声明に切り替えた後、同じ行に同じ構文エラーを持っている場合は、私が唯一のもの、それは

can use only in a DIALOGEX statement

+0

ハ、私はそれを逃した、ありがとう。しかし残念ながら、それは問題を解決しませんでした。 –

関連する問題