Я использую MF C ...
Когда я создаю новый bru sh, я знаю, что мне нужно восстановить старый bu sh с помощью SelectObject:
CBrush brushFill;
brushFill.CreateSolidBrush(colorFill);
CBrush *oldBrush = pDC->SelectObject(&brushFill);
// Draw something here.
pDC->SelectObject(oldBrush);
Однако, если я получаю bru sh с помощью GetStockObject (), нужно ли мне его тоже восстанавливать?
CBrush *oldBrush = (CBrush *)pDC->SelectObject(GetStockObject(HOLLOW_BRUSH));
// Draw something here.
pDC->SelectObject(oldBrush);
Я спрашиваю, потому что этот код иногда дает сбой. Я не уверен, что это из-за того, что я не должен сохранять / восстанавливать стоковые предметы, или из-за того, что я привел тип CBru sh*. Если последнее, я думаю, что я должен сохранить / восстановить дескриптор HGDIOBJ:
HGDIOBJ oldBrush = pDC->SelectObject(GetStockObject(HOLLOW_BRUSH));
// Draw something here.
pDC->SelectObject(oldBrush);
Если первое, я не буду сохранять / восстанавливать предыдущий объект.