pDC->StretchBlt(0, 0, rect.Width(), rect.Height(),
,&dcComp, 0, 0, bminfo.bmWidth, bminfo.bmHeight,SRCCOPY );你的参数写反了,先目的后源的

解决方案 »

  1.   

    //GetWindowRect(&WndRect);
    //ClientToScreen(&WndRect);
    CRect WndRect;
    WndRect.top=50;
    WndRect.left=20;
    WndRect.right=300;
    WndRect.bottom=650; CDC * pmem,*pMiddle; 
    CBitmap * pbit; 
    CBitmap * pold,*pMiddleOld; 
    BITMAP BitMap; 
    CBitmap *pNewBitmap=new CBitmap;
    pmem=new CDC; 
    pMiddle=new CDC;
    pbit=new CBitmap; 
    pbit->LoadBitmap(IDB_MAINBKGROUND);  pmem->CreateCompatibleDC(pDC); 
    pMiddle->CreateCompatibleDC(pDC); pold=(CBitmap *) pmem->SelectObject(pbit);
    pbit->GetObject(sizeof(BitMap),&BitMap);
    pNewBitmap->CreateCompatibleBitmap(pDC,iWidth,iHeight);
    pMiddleOld=(CBitmap *)pMiddle->SelectObject(pNewBitmap);
    pMiddle->StretchBlt(0,0,iWidth,iHeight,pmem,0,0,BitMap.bmWidth,BitMap.bmHeight,SRCCOPY); 
    pDC->BitBlt(WndRect.left,WndRect.top,iWidth,iHeight,pMiddle,0,0,SRCCOPY); 
    delete pMiddle->SelectObject(pMiddleOld);
    delete pMiddle;
    delete pmem->SelectObject(pold); 
    delete pmem; 
      

  2.   

    补充一下,把 iWidth,iHeight 换成 WndRect.Width(),WndRect.Height()
      

  3.   

    我用GetWindowRect(&rect)取得了一个举行区域rect,然后ClientToScreen(&rect),最后StretchBlt,可是图象不显示,当我把ClientToScreen换成ScreenToClient时显示出图象了,但是不是刚好在picture上,而是有点偏往左下角,这是怎么回事?到底应该用ClientToScreen了,还是应该用ScreenToClient?