CreateCompatibleBitmap()返回黑色HBITMAP

时间:2013-05-07 18:05:53

标签: c++ winapi gdi

Hello 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()。我正确使用此功能吗?我有没有做过我应该做的事情?

1 个答案:

答案 0 :(得分:5)

CreateCompatibleBitmap为您创建了位图,但它不应该使用桌面或其他任何内容进行初始化。你把它搞定到桌面而没有初始化,因此黑度不是意想不到的。如果您希望它保存桌面图像,则需要反向blit,从桌面DC到DC,并选择创建的位图。