to kimryo
谢谢。
我用BitBlt作有问题,只能显示第一个图片,较小的图片添加不上去,解决了我一定给分。

解决方案 »

  1.   

    BOOL BitBlt(    HDC hdcDest, // handle to destination device context 
        int nXDest, // x-coordinate of destination rectangle's upper-left corner
        int nYDest, // y-coordinate of destination rectangle's upper-left corner
        int nWidth, // width of destination rectangle 
        int nHeight, // height of destination rectangle 
        HDC hdcSrc, // handle to source device context 
        int nXSrc, // x-coordinate of source rectangle's upper-left corner  
        int nYSrc, // y-coordinate of source rectangle's upper-left corner
        DWORD dwRop  // raster operation code 
       );看看是否位置参数有错。建议用一个dc来bit,再bit到Screen.
      

  2.   

    我是这样作的,不知那儿错了,我在读入较大的图片的同时也建立了同样大小的缓冲内存,然后读入较小图片,用bitblt将较小的图片写到缓冲内存上,再在OnDraw里将缓冲内存bitblt到dc上。但现在程序只是显示较大的图片。
      

  3.   

    一个例子,注意,例子而已,这些东西要是都写再OnDraw里就慢死了,IDB_BITMAP1是大图,2是小的
    void CdonghuaView::OnDraw(CDC* pDC)
    {
    CdonghuaDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    pDC->TextOut(10,10,"100") ;
    CBitmap b1,b2;
    CDC* memDC=new CDC;
    CDC* memDC2=new CDC;
    memDC->CreateCompatibleDC(pDC); 
    memDC2->CreateCompatibleDC(pDC); 
    b1.LoadBitmap(IDB_BITMAP1); 
    b2.LoadBitmap (IDB_BITMAP2);
    memDC2->SelectObject(b2); 
    memDC->SelectObject(b1); 

    memDC->BitBlt(10,10,50,50,memDC2,0,0,SRCCOPY);
    pDC->BitBlt(0,0,1000,1000,memDC,0,0,SRCCOPY) ;
    delete memDC;
    delete memDC2; // TODO: 在此处为本机数据添加绘制代码
    }
      

  4.   

    bitblt这个函数是不是一定要放在OnPaint或OnDraw函数里使用.