方法一:将内存设备描述表copy到位图中获取位图句柄
HDC hScrDC,hMemDC;//屏幕和内存设备描述表
HBITMAP hBitmap,hOldBitmap;//位图句柄if(IsRectEmpty(rect)) return NULL;
//为屏幕创建设备描述表
//hScrDC=CreateCompatibleDC(NULL);
//hScrDC=::GetDC(this->m_hWnd);
hScrDC=GetWindowDC()->GetSafeHdc();
//为屏幕设备描述表创建兼容的内存设备描述表
hMemDC=CreateCompatibleDC(hScrDC);
//创建一个与屏幕设备描述表兼容的位图
hBitmap=CreateCompatibleBitmap(hScrDC,rect.Width(),rect.Height());
//把新位衅选到内存设备描述表中
hOldBitmap=(HBITMAP)SelectObject(hMemDC,hBitmap);
//把屏幕设备描述表拷贝到内存设备描述表中
BitBlt(hMemDC,-2,-2,rect.Width(),rect.Height(),hScrDC,0,0,SRCCOPY);
//得到屏幕位图句柄
hBitmap=(HBITMAP)SelectObject(hMemDC,hOldBitmap);
DeleteDC(hScrDC);
DeleteDC(hMemDC);
return hBitmap;
方法二:针对于vc6.0
http://blog.csdn.net/wltg2001/archive/2008/04/17/2300258.aspx