把对话框保存成图片

    CClientDC dc(this);  //客户区设备上下文
    CBitmap bm;
    CRect rect;
    GetClientRect(rect);
    int Width=rect.Width();
    int Height=rect.Height();
    bm.CreateCompatibleBitmap(&dc,Width,Height);

  //Initializes a bitmap that is compatible with the device specified by dc
       CDC tdc;
       tdc.CreateCompatibleDC(&dc);   //创建内存设备上下文
       CBitmap*pOld=tdc.SelectObject(&bm);//内存设备上下文选中位图
       tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY); //拷贝位图
       tdc.SelectObject(pOld);
       BITMAP btm;
       bm.GetBitmap(&btm);
       DWORD size=btm.bmWidthBytes*btm.bmHeight;
       LPSTR lpData=(LPSTR)GlobalAllocPtr(GPTR,size);
    //The BITMAPINFOHEADER structure contains information about the dimensions
       //and color format of a device-independent bitmap (DIB)
       BITMAPINFOHEADER bih;
       bih.biBitCount=btm.bmBitsPixel;
       bih.biClrImportant=0;
       bih.biClrUsed=0;
       bih.biCompression=0;
       bih.biHeight=btm.bmHeight;
       bih.biPlanes=1;
       bih.biSize=sizeof(BITMAPINFOHEADER);
       bih.biSizeImage=size;
       bih.biWidth=btm.bmWidth;
       bih.biXPelsPerMeter=0;
       bih.biYPelsPerMeter=0;
    //the bits of the specified bitmap and copies them into a buffer using the specified format.
       GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
       CString name="C://a.bmp";
    //The BITMAPFILEHEADER structure contains information about the type,
    //size, and layout of a file that contains a device-independent bitmap (DIB).
       BITMAPFILEHEADER bfh;
       bfh.bfReserved1=bfh.bfReserved2=0;
       bfh.bfType=((WORD)('M'<< 8)|'B');//Specifies the file type. It must be MB(ox4D42)
       bfh.bfSize=54+size;
       bfh.bfOffBits=54;
       CFile bf;
       if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){
              bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));
              bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));
              bf.WriteHuge(lpData,size);
              bf.Close();
      
       }
       GlobalFreePtr(lpData);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值