void CaptureScreen()...{ //获得屏幕宽度 int nScreenWidth = GetSystemMetrics(SM_CXSCREEN); //获得屏幕高度 int nScreenHeight = GetSystemMetrics(SM_CYSCREEN); //获得桌面窗口句柄 HWND hDesktopWnd = GetDesktopWindow(); //获得桌面窗口设备环境 HDC hDesktopDC = GetDC(hDesktopWnd); //产生全屏幕窗口设备描述表的兼容设备环境 HDC hCaptureDC = CreateCompatibleDC(hDesktopDC); //产生全屏幕窗口设备描述表的兼容位图 HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC,nScreenWidth, nScreenHeight); //将兼容位图选入兼容设备环境 SelectObject(hCaptureDC,hCaptureBitmap); //将全屏幕窗口位图的象素数据拷贝到兼容设备描述表 BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight,hDesktopDC,0,0,SRCCOPY); BITMAPINFO bi; void *pBits=NULL; ZeroMemory(&bi,sizeof(bi)); bi.bmiHeader.biSize=sizeof(bi.bmiHeader); bi.bmiHeader.biHeight=nScreenHeight; bi.bmiHeader.biWidth=nScreenWidth; bi.bmiHeader.biPlanes=1; bi.bmiHeader.biBitCount=24; bi.bmiHeader.biCompression=BI_RGB; bi.bmiHeader.biSizeImage=3*nScreenHeight*nScreenWidth; //产生位图兼容设备描述表 HDC hBmpFileDC=CreateCompatibleDC(hDesktopDC); //产生位图兼容位图 HBITMAP hBmpFileBitmap=CreateDIBSection(hDesktopDC,&bi,DIB_RGB_COLORS,&pBits,NULL,0); //将兼容位图选入兼设备描述表容设备描述表 SelectObject(hBmpFileDC,hBmpFileBitmap); //将捕获的位图的象素拷贝到位图设备环境 BitBlt(hBmpFileDC,0,0,nScreenWidth,nScreenHeight,hCaptureDC,0,0,SRCCOPY); //创建文件 HANDLE hFile=CreateFile("111.bmp",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); //保存位图文件 if(hFile!=INVALID_HANDLE_VALUE) ...{ DWORD dwRet=0; BITMAPFILEHEADER bmfHeader; ZeroMemory(&bmfHeader,sizeof(bmfHeader)); bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits; bmfHeader.bfType='MB'; //写入位图信息头 WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL); //写入位图尺寸颜色表等信息 WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL); //写入位图数据块 WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL); CloseHandle(hFile); } DeleteDC(hBmpFileDC); DeleteObject(hBmpFileBitmap); ReleaseDC(hDesktopWnd,hDesktopDC); DeleteDC(hCaptureDC); DeleteObject(hCaptureBitmap);}