CRect rc;
m_a.GetWindowRect(&rc);
this->ScreenToClient(&rc);

CClientDC dc(this);
CBrush * pBruch=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); CRect rc2(rc.left -3,rc.top-3,rc.right+2,rc.bottom+2); CBrush * poldBrush=dc.SelectObject(pBruch);
dc.Rectangle(rc2);
dc.SelectObject(poldBrush);
===================================================现在画出来的就是一个黑色的框,我想画其他颜色的框该怎么做啊。

解决方案 »

  1.   

    CRect rc;
    m_a.GetWindowRect(&rc);
    this->ScreenToClient(&rc);

    CClientDC dc(this);
    CBrush  Bruch(RGB(255, 0, 0));//自己设定RGB值 CRect rc2(rc.left -3,rc.top-3,rc.right+2,rc.bottom+2); CBrush * poldBrush=dc.SelectObject(&Bruch);
    dc.Rectangle(rc2);
    dc.SelectObject(poldBrush);这样试一下
      

  2.   

    CPen pen(PS_SOLID,1,RGB(255,0,0));
    CPen* poldpen=dc.SelectObject(&pen);
    选入pen ,默认为黑的!!!
      

  3.   

    CBrush Bruch(RGB(255, 0, 0));//自己设定RGB值这个不是透明刷子了,就是普通刷子填充一片区域我要的是中间空心,边缘是红色的透明画刷
      

  4.   

    livedeal(怀念),你的代码我应该加在哪里啊?我不知道怎么样即选了透明刷子又选笔……
      

  5.   

    CRect rc;
    m_a.GetWindowRect(&rc);
    this->ScreenToClient(&rc);
    CClientDC dc(this);
    CBrush * pBruch=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    CRect rc2(rc.left -3,rc.top-3,rc.right+2,rc.bottom+2);
    CPen pen(PS_SOLID,1,RGB(255,0,0));
    CPen* poldpen=dc.SelectObject(&pen);
    CBrush * poldBrush=dc.SelectObject(pBruch);
    dc.Rectangle(rc2);
    dc.SelectObject(poldBrush);
    dc.SelectObject(poldpen);
    pen.DeleteObject();
    pBruch->DeleteObject();
    怕你不给分,还是写全给你```
      

  6.   

    pBruch->DeleteObject();
    可以好像可以不用~~~~~
      

  7.   

    恩,CClientDC 自动释放的,写也可以不写也可以谢谢livedeal(怀念),搞定了。可是我又遇到个新问题:怎么擦掉我画上去的东西啊……