// Saves current graphical drawing object,
// selects a new one, then restores the old
// one upon destruction.
class AutoSelector
{
public:
AutoSelector(CDC* pDC, CGdiObject* pNew)
: m_pOld( pDC->SelectObject(pNew) ),
m_pDC( pDC )
{
ASSERT(m_pOld);
ASSERT( !pNew->
IsKindOf(RUNTIME_CLASS(CRgn)) );
}
AutoSelector(CDC* pDC, int iStockObject)
: m_pOld( pDC->
SelectStockObject(iStockObject) ),
m_pDC( pDC )
{
ASSERT(m_pOld);
}
~AutoSelector()
{
m_pDC->SelectObject(m_pOld);
}
private:
// prevent use of (incorrect) defaults
AutoSelector(const AutoSelector& a);
AutoSelector&
operator=(const AutoSelector& a);
// prevent region selection at compile
// time when possible
AutoSelector(CDC* pDC, CRgn* pRgn);
CGdiObject* m_pOld;
CDC* m_pDC;
};