HBITMAP  hOldBmp;
HDC  hdc, memdc1, memdc2;
RECT  rc;
GetWindowRect(hWnd, &rc);
hdc = GetDC(hWnd);
memdc1 = CreateCompatibleDC(hdc);
memdc2 = CreateCompatibleDC(hdc);hOldBmp = SelectObject(memdc1, hNewBitmap1); // hNewBitmap1 是之前已经加载好的位图
DeleteObject(hOldBmp);
hOldBmp = SelectObject(memdc1, hNewBitmap2); // hNewBitmap1 是之前已经加载好的位图
DeleteObject(hOldBmp);
//下面的 w1 和 h1 是hNewBitmap1位图的宽和高,之前已获取。
BitBlt(memdc2, 0, 0, w1, h1, memdc1, 0, 0, SRCCOPY);  // 把位图 hNewBitmap1 画到 hNewBitmap2 上。
BitBlt(hdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, memdc2, 0, 0, SRCCOPY); // 显示画的结果,为什么位图 hNewBitmap1 没有画到 hNewBitmap2 上?

解决方案 »

  1.   

    hOldBmp = SelectObject(memdc1, hNewBitmap2); 这一句是把hNewBitmap2选入设别memdc1,不是memdc2HBITMAP  hOldBmp; 
    HDC  hdc, memdc1, memdc2; 
    RECT  rc; 
    GetWindowRect(hWnd, &rc); 
    hdc = GetDC(hWnd); 
    memdc2 = CreateCompatibleDC(hdc); 
    memdc1 = CreateCompatibleDC(memdc2); hOldBmp = SelectObject(memdc2 , hNewBitmap2); // hNewBitmap1 是之前已经加载好的位图 
    hOldBmp = SelectObject(memdc1, hNewBitmap1); // hNewBitmap1 是之前已经加载好的位图 
    //下面的 w1 和 h1 是hNewBitmap1位图的宽和高,之前已获取。 
    BitBlt(memdc2, 0, 0, w1, h1, memdc1, 0, 0, SRCCOPY);  // 把位图 hNewBitmap1 画到 hNewBitmap2 上。 
    BitBlt(hdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, memdc2, 0, 0, SRCCOPY);  // 把位图 hNewBitmap1 画到 
      

  2.   

    回复楼上:哦,那时我写错了。即使选入memdc2也不行的。