void CaptureWindow(HWND hwnd)
{
//获取窗口的width和height
RECT rect;
GetWindowRect(hwnd,&rect); //这个函数得到的是整个窗口的Rect,包括非客户区,而近要得到客户区的rect,请使用GetClientRect
DWORD width =rect.right-rect.left;
DWORD height =rect.bottom-rect.top;
//获取窗口的DC
HDC hdc = GetWindowDC(hwnd); //如果这里用GetDC(hwnd),则BitBlt出来的是窗口客户区的颜色数据,不包括非客户区
//创建和屏幕DC兼容的内存DC
HDC hMemDC=CreateCompatibleDC(hdc);
//BitBlt能够将一个窗口DC的颜色数据copy到另一个窗口DC中,而存放这些颜色的数据必须是一张位图
//所以要先创建一张位图
HBITMAP hBitmap = CreateCompatibleBitmap(hdc,width,height);
//因为可以创建很多张位图,你到底要把数据传送到哪一张位图上面呢? 用SelectObject就可以了。
SelectObject(hMemDC,hBitmap);
//将屏幕DC中的颜色数据传送到内存DC中的位图上
BitBlt(hMemDC,0,0,width,height,hdc,0,0,SRCCOPY);
//将位图放入剪贴板
//打开剪贴板
OpenClipboard(NULL);
//清空剪贴板内容
EmptyClipboard();
//把位图的信息放到剪贴板上
SetClipboardData(CF_BITMAP,hBitmap );
CloseClipboard();
ReleaseDC(hwnd,hdc);
DeleteDC(hMemDC);
DeleteObject(hBitmap);
}