如何获取位图的缩略图?
Wafly 2009-05-11 01:11:04 想编一个截取窗口内容的程序,但是创建位图时总是出错(应该是内存不足的原因吧)
下面是代码:
CRect rcClient = NULL;
GetWindowRect(hwnd,&rcClient); //hwnd是目标窗口句柄
int w = rcClient.right - rcClient.left;
int h = rcClient.bottom - rcClient.top;
HDC dc = GetDC(hwnd);
HDC gpBmpHdc = CreateCompatibleDC(dc);
HBITMAP hBitmap = CreateCompatibleBitmap(dc, w, h); //这一句出错
HGDIOBJ oldhdc = SelectObject(gpBmpHdc, hBitmap);
PrintWindow(hwnd,gpBmpHdc,NULL);
CImage image;
image.Attach(hBitmap);
image.Save(L"c:\\B.bmp");
image.Detach();
DeleteDC(gpBmpHdc);
ReleaseDC(hwnd, dc);
DeleteObject(oldhdc);
DeleteObject(hBitmap);
这段代码截取小尺寸的窗口(QQ窗口、计算器……)还行,最大化窗口就不行了
我只是想取得的图片能看清就行,所以就想到能不能从DC中取得小图,这样就不会导致内存不足了
小弟初学c++,不知道有高手知道这个想法可行么