0

抱歉,如果之前已经回答过这个问题,我无法找到答案。

我正在我的 Win32 应用程序中进行一些绘画,并且在很多情况下我只需要绘制一次对象(例如矩形)。我目前为此创建画笔的方式如下:

HBRUSH sampleBrush = CreateSolidBrush(RGB(1, 119, 158));
SelectObject(myDC, sampleBrush);
// Do some painting on DC using brush
DeleteObject(sampleBrush);

创建画笔,存储手柄,选择进入DC,使用画笔,释放内存。

但是,如果我改为执行以下操作:

SelectObject(myDC, CreateSolidBrush(RGB(1, 119, 158)));

由于我没有存储我创建的画笔的句柄,因此是否需要任何内存管理?如果是这样,我将如何释放内存?

4

1 回答 1

3

该功能CreateSolidBrush无法知道您如何使用它。它无法知道您没有存放手柄,因此会执行一些自动清理。由于文档CreateSolidBrush指定您应该DeleteObject使用返回的句柄进行调用,因此您应该确保遵守这些要求。

如果您不存储句柄,那么您将无法访问它并且无法确保对象被销毁。

于 2013-05-01T11:39:06.630 回答