4

私は 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: resource.rc:40: syntax error

40行目は次を参照しています。

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

MSDNによると、

DIALOGEX ステートメントでのみ使用できる GROUPBOX ステートメントは、コントロール ウィンドウのテキスト、識別子、寸法、および属性を定義します。

GROUPBOX テキスト、id、x、y、幅、高さ [、スタイル [、拡張スタイル]]

彼らの例:

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

私は何を間違っていますか?

4

2 に答える 2

4

ステートメントに切り替えた後も同じ行に同じ構文エラーがある場合DIALOGEX(@YeenFeiが指摘したように)、私が考えることができるのは、IDC_STATIC定義されていないことだけです。

に変更してみてください

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

それで問題が解決する場合は、識別子が定義されていないことが原因です。

Platform SDKヘッダー(6.1および7.1)を検索しましたが、見つかりませんでした。これはMFC固有の識別子である可能性があると思います。グーグルで簡単に説明すると、MFCがまだ定義されていない場合は「afxres.h」で定義する必要があります。

IDOKまたIDCANCEL、Platform SDK( "winuser.h"内)で定義されているため、明示的に定義しなくても機能します。

于 2011-01-24T20:57:23.800 に答える
4

私はそれがかなり自明だと思う

DIALOGEX ステートメントでのみ使用できます

于 2011-01-24T05:19:41.170 に答える