本帖最后由 u010827382 于 2014-11-02 12:55:20 编辑

解决方案 »

  1.   

    把m_MemDC.StretchBlt(0, 0,rect.Width(), rect.Height(), &m_ClothDC, 0, 0, rect.Width(), rect.Height(),SRCCOPY);改成
    m_MemDC.TransparentBlt(0, 0, rect.Width(), rect.Height(), &m_ClothDC, 0, 0, rect.Width(), rect.Height(), RGB(0, 0, 0));
      

  2.   

    m_MemDC.CreateCompatibleDC(&dc);
      

  3.   

    回复ChingLyon:
    这样改了之后  背景是能显示了  但是我在m_ClothDc中画的图显示不出来了。
      

  4.   

    回复schlafenhamster:
    m_MemDC.CreateCompatibleDC(&dc);
    这和参数有关吗?  这样跟参数为NULL是一样的吧?
      

  5.   

    我在void **dlg::OnInitDialog()做的是下面的处理:
    CBitmap MemBitmap;//定义一个位图对象
    m_ClothDC.CreateCompatibleDC(NULL); //建立与屏幕显示兼容的内存显示装备
    MemBitmap.CreateCompatibleBitmap(GetDC(), rect.Width(),rect.Height()); //建立一个与屏幕兼容的位图
    m_ClothDC.SelectObject(&MemBitmap);//将位图选入到内存显示设备中
    m_ClothDC.SetStretchBltMode(HALFTONE); 
    CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    m_ClothDC.SelectObject(pBrush);
    LoadImageFromResource(&m_Image, str);   //加载图片    这个不会错
            m_Image.draw(m_ClothDC,&&&&&);



    }
      

  6.   

    对话框背景透明,必须使用层窗口,那么就需要使用gdi+来绘制图片和文字。
      

  7.   

    没办法了  实在找不到好的解决办法,只好再弄一个dc,把m_clothdc上的东西先绘制到这个Dc上,若要改变m_clothdc上的图片的话 ,再从新画过