c++ - 为什么 Windres 在我的 GROUPBOX 语句中报告语法错误?

标签 c++ winapi resources groupbox

我正在尝试使用 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 ,

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

我做错了什么?

最佳答案

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

尝试将其更改为

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

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

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

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

关于c++ - 为什么 Windres 在我的 GROUPBOX 语句中报告语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778823/

相关文章:

hadoop - 如何更改当前正在运行的 hadoop 作业的队列?

C++ 将当前日期和时间与当前日期和设置时间进行比较

c++ - Qt5.5 为什么不显示错误信息?

c - 模拟点击进入 PopMenu 窗口

c++ - 带有隐藏控制台窗口的 AllocConsole()

android - Android 如何管理其资源?

c++ - 关于C++对象构造和范围的问题

c++ - 简单的编译器问题

c++ - 我怎样才能在文本框中做平滑的字母(抗锯齿)

java - 关闭 AutoCloseable 的正确方法