我用如下代码获得了CStatic的cdc
CDC *pDC = m_ctlWin.GetDC();
pDC->SetBkColor(RGB(255,255,255)); pDC->Rectangle (0, 0, 20, 20);
但是这些代码一点作用都没有,根本就没有在上面画出任何东西,为什么?

解决方案 »

  1.   

    在父窗口的Onpaint函数里:
    CPaintdc dc(this);
    CRect rt;
    m_ctlWin.GetWindowRect(rt);
    ScreenToClient(rt);
    dc.SetBkColor(RGB(255,255,255));
    dc.Rectangle (rt.left, rt.right, rt.left + 20, rt.right + 20);
      

  2.   

    重再CStatic,生产自己的一个类,
    然后再OnPaint()中画
      

  3.   

    方法一:对CStatic进行派生
            在派生类中overload OnPaint()方法二:直接在Dialog中的OnPaint()里头对m_static进行绘画画一定要在OnPaint() OnDraw()这种CallBack中画,否则是没用的-----------------
               May you succeed!
      

  4.   

    in OnPaint() do your work
      

  5.   

    怎么你问的问题和我以前问的一样呢?呵呵,感觉DC是TMD做的恶性,晦涩之极!
      

  6.   

    CClientDC dc(pStatic);
    dc.Rectangle (0, 0, 20, 20);