7

我是在 Visual C++ 中使用图形的新手。我只是想制作一个填充颜色的矩形。需要帮助来纠正这个...

RECT rect;
HDC hdc;
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
rect.left=30;
rect.right=100;
rect.top=50;
rect.bottom=200;
FillRect(hdc,&rect,(HBRUSH)(RGB(40,151,151)));

错误是:

ERROR: The variable 'rect' is being used without being initialized.

4

2 回答 2

7

这通常是警告,而不是错误。在这种情况下,它也似乎是虚假的。

如果你初始化它可能会更好:

HDC hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
RECT rect = {30, 50, 100, 200};
HBRUSH brush = CreateSolidBrush(RGB(50, 151, 151));

FillRect(hdc, &rect, brush);

DeleteObject(brush);

请注意使用CreateSolidBrush-- 将颜色投射到 HBRUSH 似乎不太可能起作用。

于 2013-04-19T17:52:17.550 回答
3

由于此代码,您的代码失败:

(HBRUSH)(RGB(40,151,151))

您不能以HBRUSH任何有意义的方式将 RGB 颜色转换为。获得一个的唯一方法HBRUSH是要求系统给你一个。

因此,您需要为此目的使用其中一个 API 函数创建一个真正的画笔。例如,CreateSolidBrush

HBRUSH hBrush = CreateSolidBrush(RGB(40,151,151));

刷完后,调用DeleteObject资源返回系统。

作为一般规则,每次编写演员表时,都将代码视为非常可疑。始终努力编写没有强制转换的代码。

于 2013-04-19T18:27:30.540 回答