0
我想從0x0(左上角)獲得我的屏幕的500x500 HBITMAP並將其繪製在我的窗口上。 這裏是我的代碼。 SaveBitmap()
保存HBITMAP及其工作正常。SetBitmapBits沒有在窗口上設置捕獲的HBITMAP
int scrnw = 500;
int scrnh = 500;
HDC shdc=GetWindowDC(NULL);
HWND win=WindowFromDC(shdc);
HDC cdc=CreateCompatibleDC(shdc);
HBITMAP temp=CreateCompatibleBitmap(shdc,scrnw,scrnh);
PAINTSTRUCT ps;
shdc=BeginPaint(win,&ps);
HBITMAP oldb=(HBITMAP)SelectObject(cdc,temp);
BitBlt(cdc,0,0,scrnw,scrnh,shdc,0,0,SRCCOPY);
SelectObject(cdc,oldb);
EndPaint(win,&ps);
char * buffer;
buffer=new char[scrnw*scrnh*4];
GetBitmapBits(temp,scrnw*scrnh*4,buffer);
SaveBitmap("C:\\scan.bmp", temp);
HDC hdc=GetWindowDC(hwnd);
HBITMAP scrn = CreateCompatibleBitmap(hdc,500,500);
SetBitmapBits(scrn,500*500*4,buffer);
問題是捕獲的圖像沒有繪製在窗口上。我錯過了什麼地方?