类似截图,自己参考

  1.  CDC *pdeskdc = GetDesktopWindow()->GetDC();    
  2.     CRect re;  
  3.     //获取窗口的大小  
  4.     GetDesktopWindow()->GetClientRect(&re);  
  5.     CBitmap bmp;  
  6.     bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height());  
  7.     //创建一个兼容的内存画板  
  8.     CDC memorydc;  
  9.     memorydc.CreateCompatibleDC(pdeskdc);  
  10.   
  11.     //选中画笔  
  12.     CBitmap *pold = memorydc.SelectObject(&bmp);  
  13.   
  14.     //绘制图像  
  15.     memorydc.BitBlt(0,0,re.Width() ,re.Height(), pdeskdc , 0 ,0 ,SRCCOPY) ;  
  16.   
  17.     //获取鼠标位置,然后添加鼠标图像  
  18.     CPoint po;  
  19.     GetCursorPos(&po);  
  20.     HICON hinco = (HICON)GetCursor();  
  21.     memorydc.DrawIcon(po.x-10 , po.y - 10 , hinco);  
  22.     //选中原来的画笔  
  23.     memorydc.SelectObject(pold);  
  24.     BITMAP bit;  
  25.     bmp.GetBitmap(&bit);  
  26. //  DWORD size = bit.bmWidth * bit.bmHeight ;  
  27.   
  28.     //定义 图像大小(单位:byte)  
  29.     DWORD size = bit.bmWidthBytes * bit.bmHeight ;  
  30.     LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR , size) ;  
  31.   
  32.     //后面是创建一个bmp文件的必须文件头,想要了解可以参考msdn  
  33.       
  34.     BITMAPINFOHEADER pbitinfo;  
  35.     pbitinfo.biBitCount = 24 ;   
  36.     pbitinfo.biClrImportant = 0;  
  37.     pbitinfo.biCompression = BI_RGB ;  
  38.     pbitinfo.biHeight = bit.bmHeight ;   
  39.     pbitinfo.biPlanes = 1 ;  
  40.     pbitinfo.biSize = sizeof(BITMAPINFOHEADER);  
  41.     pbitinfo.biSizeImage =size;  
  42.     pbitinfo.biWidth = bit.bmWidth;  
  43.     pbitinfo.biXPelsPerMeter = 0;  
  44.     pbitinfo.biYPelsPerMeter = 0 ;  
  45.   
  46.     GetDIBits(pdeskdc->m_hDC , bmp , 0 , pbitinfo.biHeight , lpdata ,   
  47.         (BITMAPINFO*)&pbitinfo,DIB_RGB_COLORS);  
  48.   
  49.     BITMAPFILEHEADER bfh;  
  50.     bfh.bfReserved1 = bfh.bfReserved2 = 0 ;  
  51.     bfh.bfType = ((WORD)('M'<< 8)|'B');  
  52.     bfh.bfSize = 54 + size ;   
  53.     bfh.bfOffBits = 54 ;  
  54.       
  55.     //写入文件  
  56.   
  57.     CFile file;  
  58.     if ( file.Open("1.bmp" , CFile::modeCreate|CFile::modeWrite) )  
  59.     {  
  60.         file.WriteHuge( &bfh , sizeof(BITMAPFILEHEADER) );  
  61.         file.WriteHuge(&pbitinfo , sizeof(BITMAPINFOHEADER));  
  62.         file.WriteHuge(lpdata , size);  
  63.         file.Close();  
  64.     }  
  65.     GlobalFree(lpdata);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值