BEGIN_MSG_MAP(CODButtonImpl)
CHAIN_MSG_MAP_ALT(COwnerDraw<CODButtonImpl>, 1)
MSG_WM_ERASEBKGND(OnEraseBkGnd)
DEFAULT_REFLECTION_HANDLER()
END_MSG_MAP()
LRESULT OnEraseBkGnd(HDC hDC)
{
CDC dc(hDC);// CDCHandle dc(hDC);
return 1;
}
void DrawItem ( LPDRAWITEMSTRUCT lpdis )
{
RECT rc = lpdis->rcItem;
CDCHandle hdc = lpdis->hDC;
CDC dc(lpdis->hDC);
CPen pen;
pen.CreatePen(0,1,RGB(28,81,128));
HPEN hOldPen = dc.SelectPen(pen);
HBRUSH hOldBrush = dc.SelectStockBrush(WHITE_BRUSH);
dc.Ellipse(&rc);
}
原来是红色的那行,它用CDC来管理hDC,用完后就释放hDC了。改成CDCHandle就好了。