这个问题已经困扰几天了?画实边框相对简单,用FrameRgn即可。

解决方案 »

  1.   

    BOOL FrameRgn(
      HDC hdc,     // handle to device context
      HRGN hrgn,   // handle to region to be framed
      HBRUSH hbr,  // 指定虚线的刷子. 
      int nWidth,  // width of region frame
      int nHeight  // height of region frame
    );
    指定一个虚线的刷子就可以了~~
      

  2.   

    你可以这么试试CRect rect(0, 0, 5, 5);
    CDC dc;
    CBitmap bmp; dc.CreateCompatibleDC(pDC);
    bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());
    CBitmap* pOldBmp = dc.SelectObject(&bmp);dc.FillSolidRect(rect.left, rect.top, rect.Width(), rect.Height(), RGB(255,255,255)); //可以根据需求绘制各种虚线
    dc.SetPixel(CPoint(rect.Width()/2,rect.Height()/2), RGB(0,0,0)); dc.SelectObject(pOldBmp); HRGN hRgn = CreateEllipticRgn(50, 50, 150, 150); CBrush brush;
    brush.CreatePatternBrush(&bmp);FrameRgn(pDC->m_hDC, hRgn, (HBRUSH)brush.m_hObject, rect.Width(), rect.Height()); brush.DeleteObject(); DeleteObject(hRgn); dc.DeleteDC();
    bmp.DeleteObject();