?

解决方案 »

  1.   

    实际上就是自定义一个CStatic,然后画背景的问题
    为什么限制了CStatic的区域,还能画到外面去呢
      

  2.   

    不是很明白,既然在cstatic中画背景,即使不用设SetWindowRgn只要是在你自定义的CStatic类用OnEraseBkgnd来画背景,就不会到外面去阿
    关外面的对话框什么事阿,
      

  3.   

    我是在自定义的CStatic类中画背景,但是就是会画到Dialog当中
      

  4.   

    代码如下BOOL CMyStatic::OnEraseBkgnd(CDC* pDC) 
    {
    CDC memDC;
    memDC.CreateCompatibleDC(pDC);
    memDC.SelectClipRgn(&m_rgn,RGN_COPY);
    CBitmap *pOldbmp=memDC.SelectObject(&m_bmp);
    BITMAP bm;
    m_bmp.GetBitmap(&bm);
    pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY);
    memDC.SelectObject(pOldbmp);
    memDC.DeleteDC();
    return 0;
    }
      

  5.   

    没试过。加一句:
    pDC->SelectClipRgn(&m_rgn,RGN_COPY);可以吗?
      

  6.   

    pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&memDC,0,0,SRCCOPY);
    bm??
    好像应该是
    m_rgn
      

  7.   

    嗯,嗯,楼上的说法提醒了我啊,对啊,
    如果这个图片的大小超过了你这个static的大小,那是不是会出去呢??
    你试试用m_rgn作为大小呢
      

  8.   

    --嗯,嗯,楼上的说法提醒了我啊,对啊,
    --如果这个图片的大小超过了你这个static的大小,那是不是会出去呢??
    --你试试用m_rgn作为大小呢但是我的m_rgn肯定是不规则的,传进来的宽和高,也肯定不对呀。
    我看过自定义button的代码,
    它可以设置自画,这样无论是写字还是贴图都不会画到外面
      

  9.   

    回复人: anothervip(anothervip) ( ) 没试过。加一句:
    pDC->SelectClipRgn(&m_rgn,RGN_COPY);可以吗?
    ===========================
    同意这个
      

  10.   

    那就把m_rgn 换成 rect 再试试吧。
    CRect rect;
    CStatic.GetClientRect(rect);