CBitmap* pbmpOld=memDC.SelectObject(&bmpDraw) ;//保存原有DDB,并选入新DDB入DC
我想问下“它后面是将新的选入DC,然后又赋给pbmpOld,那它又是如何保存原有的呢?”,希望大家帮帮忙。

解决方案 »

  1.   

    “它后面是将新的选入DC,然后又赋给pbmpOld,那它又是如何保存原有的呢?”
    =====================
    你还是看一下MSDN,对SelectObject这个函数的返回值仔细看一下吧。
    这个函数将bmpDraw选入DC,返回DC中原来的位图句柄,也就是旧位图句柄。
      

  2.   

    SelectObject()函数有两种,一种是返回原位图对象的指针
    CBitmap* SelectObject( CBitmap* pBitmap );
    还有一种是,返回的是原位图的句柄
    HGDIOBJ SelectObject(
      HDC hdc,          // handle to device context
      HGDIOBJ hgdiobj   // handle to object
    );
    也就是在新的位图选入内存DC之后,会返回一个原位图的对象指针
    最终将位图拷贝到上下文设备环境之后,
    通过memDC.SelectObject(pOldBmp)将原位图选入DC
      

  3.   

    SelectObject()函数有两种,
    ==========
    一个是API,一个是MFC中CDC类的成员函数