【发布时间】:2020-07-21 06:12:09
【问题描述】:
我正在使用 MFC...
当我创建一个新画笔时,我知道我需要使用 SelectObject 恢复旧灌木:
CBrush brushFill;
brushFill.CreateSolidBrush(colorFill);
CBrush *oldBrush = pDC->SelectObject(&brushFill);
// Draw something here.
pDC->SelectObject(oldBrush);
但是,如果我使用 GetStockObject() 获取画笔,是否也需要恢复它?
CBrush *oldBrush = (CBrush *)pDC->SelectObject(GetStockObject(HOLLOW_BRUSH));
// Draw something here.
pDC->SelectObject(oldBrush);
我问,因为该代码偶尔会崩溃。我不确定这是否是因为我不应该保存/恢复库存物品,或者我的类型转换为 CBrush*。如果是后者,我想我应该保存/恢复一个 HGDIOBJ 句柄:
HGDIOBJ oldBrush = pDC->SelectObject(GetStockObject(HOLLOW_BRUSH));
// Draw something here.
pDC->SelectObject(oldBrush);
如果是前者,我不会保存/恢复之前的对象。
【问题讨论】: