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()。我正确使用此功能吗?我有没有做过我应该做的事情?
答案 0 :(得分:5)
CreateCompatibleBitmap
为您创建了位图,但它不应该使用桌面或其他任何内容进行初始化。你把它搞定到桌面而没有初始化,因此黑度不是意想不到的。如果您希望它保存桌面图像,则需要反向blit,从桌面DC到DC,并选择创建的位图。