删除itunes中的影片:将dc内容保存为bmp文件

来源:百度文库 编辑:中财网 时间:2024/05/07 03:00:16
比如要保存窗口内容为bmp图片,先将dc关联hbitmap,然后bitblt到dc上,就可以保存为bmp了。很方便的bool SaveBMP(HBITMAP hmp,CString strFileName)
{  //把位图的信息保存到bmpinfo
 BITMAP bmpinfo;
 GetObject(hmp,sizeof(BITMAP),&bmpinfo);
 DWORD dwBmBitsSize = ((bmpinfo.bmWidth * 32+31)/32) * 4 * bmpinfo.bmHeight;  //位图文件头 14字节
 BITMAPFILEHEADER bf;
 bf.bfType      = 0x4D42;                  //BM
 bf.bfSize      = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + dwBmBitsSize;
 bf.bfReserved1 = 0;
 bf.bfReserved2 = 0;
 bf.bfOffBits   = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);  //位图信息头
 BITMAPINFOHEADER bi;
 bi.biSize          = sizeof(BITMAPINFOHEADER);
 bi.biWidth         = bmpinfo.bmWidth;
 bi.biHeight        = bmpinfo.bmHeight;
 bi.biPlanes        = 1;
 bi.biBitCount      = 32;
 bi.biCompression   = BI_RGB;
 bi.biSizeImage     = 0;
 bi.biXPelsPerMeter = 0;
 bi.biYPelsPerMeter = 0;
 bi.biClrUsed       = 8;
 bi.biClrImportant  = 0; //位图数据
 char* context = new char[dwBmBitsSize];
 HDC dc  = GetDC(NULL);
 GetDIBits(dc, hmp, 0, bi.biHeight, context, (BITMAPINFO*)&bi, DIB_RGB_COLORS); HANDLE file = ::CreateFile(strFileName,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS  ,FILE_ATTRIBUTE_NORMAL,NULL);
 DWORD Num;
 if(INVALID_HANDLE_VALUE != file )
 {
  WriteFile(file,&bf,sizeof(BITMAPFILEHEADER),&Num,NULL);
  WriteFile(file,&bi,sizeof(BITMAPINFOHEADER),&Num,NULL);
  WriteFile(file,context,dwBmBitsSize,&Num,NULL);
  ::CloseHandle(file);
 } 
 delete context;  return 0;
}