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 text, id, x, y, width, height [, style [, extended-style]]

他们的例子:

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

我究竟做错了什么?

4

2 回答 2

4

我认为这几乎是不言自明的

只能在DIALOGEX 语句中使用

于 2011-01-24T05:19:41.170 回答
4

如果切换到DIALOGEX语句后在同一行上仍然有相同的语法错误(正如@YeenFei 指出的那样),我唯一能想到的IDC_STATIC就是没有定义。

尝试将其更改为

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

如果这样可以解决问题,那是因为没有定义标识符。

我通过 Platform SDK 标头(6.1 和 7.1)进行了搜索,但没有找到。我认为这可能是一个特定于 MFC 的标识符——一些快速的谷歌搜索建议 MFC 在“afxres.h”中定义它,如果它尚未定义。

IDOKIDCANCEL即使您没有明确定义它们也可以工作,因为它们是在 Platform SDK 中定义的(在“winuser.h”中)。

于 2011-01-24T20:57:23.800 回答