要显示图片时用SelectObject(m_dcMemL, WCanvusLeft.hBitmap)
然后dc1.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),&m_dcMemL,sourcex, sourcey,SRCCOPY);
能够显示图片,但是进行旋转或放大后处理后,再使用SelectObject(m_dcMemL, WCanvusLeft.hBitmap)
dc1.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),&m_dcMemL,sourcex, sourcey,SRCCOPY);后就是图片区域全是黑的,像一块黑布...怎么解决啊...SelectObject()没有返回值应该可以吧...
谢谢啊,给点提示...

解决方案 »

  1.   

    http://www.vckbase.com/document/viewdoc/?id=1612http://www.vckbase.com/document/viewdoc/?id=1811
      

  2.   

    同一个位图,SelectObject两次选入DC???你可以MSDN一下SelectObject
      

  3.   

    2楼正解,资源select进DC用完后要恢复到上次的,不然就会出现你这种情况
      

  4.   

    HBITMAP hOldbmp = SelectObject(m_dcMemL, WCanvusLeft.hBitmap);
    dc1.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),&m_dcMemL,sourcex, sourcey,SRCCOPY);
    SelectObject(m_dcMemL, hOldbmp );
    每次都要恢复设备环境。。
      

  5.   

    MSDN 中有这样一句话:An application cannot select a bitmap into more than one DC at a time. 楼上的几位讲的很对。
      

  6.   

    可是现在改了,还是一块黑布啊,我贴部分代码:
    打开图片:m_hBmpOld = (HBITMAP)SelectObject(m_dcMemL, WCanvusLeft.hBitmap)
    在onpaint()里面,
    dc1.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),&m_dcMemL,sourcex, sourcey,SRCCOPY);
    此时能够显示图片,滚动条拖动也可以。
    在放大按钮的消息响应里面:
    m_hBmpnew = (HBITMAP)SelectObject(m_dcMemL,m_hBmpOld)  );
    DeleteObject(m_hBmpnew);
    然后进行放大处理,此时WCanvusLeft.hBitmap 是重新创建的,名字相同。
    m_hBmpOld = (HBITMAP)SelectObject(m_dcMemL, WCanvusLeft.hBitmap ) 
    dc.BitBlt(offsetx,offsety, rect1.Width(), rect1.Height(),&m_dcMemL,sourcex, sourcey,SRCCOPY);
    为什么还是一块黑布啊...