2013-05-07 94 views
1

Hello Stack溢出用戶。看來,我不使用CreateCompatibleBitmap()正常在下面的代碼:CreateCompatibleBitmap()返回黑色HBITMAP

#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()是返回桌面DC的1366x768的部分,但會顯示黑屏的BitBlt()之後。我沒有使用CreateCompatibleBitmap,而是將位圖文件加載到hBit中,並且所有內容都符合要求,所以我想這個問題只適用於CreateCompatibleBitmap()。我是否正確使用此功能?我有沒有做我應該做的事?

回答

5

CreateCompatibleBitmap爲您創建位圖,但它不應該與桌面或其他任何的一部分進行初始化。你不用初始化就把它放到桌面上,因此黑度並不意外。如果您希望它保存桌面圖像,則需要從桌面DC向相反方向移動,並選擇創建的位圖。

相關問題