用BitBlt函数就是不会改变大小的。你用的是StretchBlt函数了。

解决方案 »

  1.   

    seesi你好,能否讲得再详细一点
      

  2.   

    m_pbmp是一个全局CBitmap对象。
    构造初始化:m_pbmp=NULL;
    析构删除:if(m_pbmp){
    m_pbmp->Detach();
    m_pbmp->DeleteObject();
    delete m_pbmp;
    m_pbmp = NULL;
    }
    在On_WM_EraseBkgnd消息相应中:
    BITMAP bm;
    CDC dcMem;
    dcMem.CreateCompatibleDC(pDC);
    m_pbmp = new CBitmap();
    m_pbmp->LoadBitmap(资源ID); CBitmap *pBmpOld=(CBitmap *)dcMem.SelectObject(m_pbmp);
    m_pbmp->GetObject(sizeof(bm),(LPVOID)&bm);
    CRect rcClient;
    GetClientRect(rcClient); pDC->StretchBlt(0,0,
    rcClient.right-rcClient.left,
    rcClient.bottom-rcClient.top,
    &dcMem,
    0,0,
    bm.bmWidth,bm.bmHeight,
    SRCCOPY); dcMem.SelectObject(pBmpOld);OK??!!
      

  3.   

    用BitBlt代替上面的StretchBlt,可以不拉伸。好的话加分哦