终于找到第二个圆绘不出来的原因

    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就好了。

原文地址:https://www.cnblogs.com/huqingyu/p/44799.html