在C ++中使用FillRect()

我是在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.


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

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

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似乎不太可能。


您的代码因以下代码而失败:

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

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

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

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

完成画笔后,调用DeleteObject将资源返回给系统。

作为一般规则,每当你写剧组时,都认为该代码非常可疑。 始终努力编写没有强制转换的代码。

链接地址: http://www.djcxy.com/p/71005.html

上一篇: Using FillRect() in C++

下一篇: How to force a content provider to reset when manually deleting database