1

你好 Stack Overflow 用户。似乎我没有在以下代码中正确使用 CreateCompatibleBitmap() :

#include <windows.h>
using namespace std;
int main() {HDC hdc=GetDC(HWND_DESKTOP); HDC MemDC=CreateCompatibleDC(hdc);
    HBITMAP hBit=CreateCompatibleBitmap(hdc,1366,768);
    SelectObject(MemDC,hBit);
    BitBlt(hdc,0,0,1366,768,MemDC,0,0,SRCCOPY); //Screen turns black
    DeleteObject(hBit);
    ReleaseDC(HWND_DESKTOP,hdc);
    ReleaseDC(NULL,MemDC);
    DeleteDC(MemDC);
    DeleteDC(hdc);
}

我以为 CreateCompatibleBitmap() 是返回 Desktop DC 的 1366x768 部分,但在 BitBlt() 之后显示黑屏。我没有使用 CreateCompatibleBitmap,而是将位图文件加载到 hBit 中,一切都如愿以偿,所以我猜问题仅出在 CreateCompatibleBitmap() 上。我是否正确使用此功能?有什么我没有做但我应该做的事情吗?

4

1 回答 1

6

CreateCompatibleBitmap为您创建了位图,但不应使用桌面的一部分或其他任何东西对其进行初始化。您在没有初始化的情况下将其放入桌面,因此黑色并不意外。如果你想让它保持桌面图像,你需要在相反的方向上进行 blit,从桌面 DC 到 DC 并选择创建的位图。

于 2013-05-07T18:13:17.257 回答