0

我在 Delphi XE4 中有以下行,这给了我错误:E1012 Constant expression violates subrange bounds

Message.WParam := clBtnFace;

当我调试代码时,我得到了clBtnFace = -16777201;

同样适用于 Delphi 7 代码。

我在stackoverflow上找到了以下链接,但无法解决我的问题: 使用`in`关键字导致Delphi中的“E1012常量表达式违反子范围界限”

4

1 回答 1

4

在现代 Delphi 版本中,Windows 数据类型的声明已与 Windows 头文件中的定义保持一致。并且WPARAM一直是无符号类型。但是在旧版本的 Delphi 中,它被错误地声明为已签名。

因此,要在现代 Delphi 中编译代码,您需要将值转换为与Message.WParam. 这种类型是WPARAM

Message.WParam := WPARAM(clBtnFace);
于 2013-10-09T11:57:21.820 回答