[MFC] MFC 获取指定窗口截图(大小可调)
- void screenShot(CRect rect,int left,int top,char *name){//截取窗口的大小,位置,名字(保存在默认路径下)
- CBitmap* m_pBitmap; // 加入类成员
- CFrameWnd* pMainFrame = (CFrameWnd*)AfxGetMainWnd(); // 获得截图窗口的指针,默认为主窗口,可以更改为其他的窗口。
- CPaintDC dc(pMainFrame);
- m_pBitmap=new CBitmap;
- m_pBitmap->CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());
- CDC memDC;
- memDC.CreateCompatibleDC(&dc);
- CBitmap memBitmap, *oldmemBitmap; // 建立和屏幕兼容的bitmap
- memBitmap.CreateCompatibleBitmap(&dc, rect.Width(),rect.Height());
- oldmemBitmap = memDC.SelectObject(&memBitmap);//将memBitmap选入内存DC
- memDC.BitBlt(, , rect.Width(),rect.Height(), &dc,left, top, SRCCOPY); // 调解高度宽度
- BITMAP bmp;
- memBitmap.GetBitmap(&bmp); // 获得位图信息
- FILE *fp = fopen(name, "w+b");
- BITMAPINFOHEADER bih = {}; // 位图信息头
- bih.biBitCount = bmp.bmBitsPixel; // 每个像素字节大小
- bih.biCompression = BI_RGB;
- bih.biHeight = bmp.bmHeight; // 高度
- bih.biPlanes = ;
- bih.biSize = sizeof(BITMAPINFOHEADER);
- bih.biSizeImage = bmp.bmWidthBytes * bmp.bmHeight; // 图像数据大小
- bih.biWidth = bmp.bmWidth; // 宽度
- BITMAPFILEHEADER bfh = {}; // 位图文件头
- bfh.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); // 到位图数据的偏移量
- bfh.bfSize = bfh.bfOffBits + bmp.bmWidthBytes * bmp.bmHeight; // 文件总的大小
- bfh.bfType = (WORD)0x4d42;
- fwrite(&bfh, , sizeof(BITMAPFILEHEADER), fp); //写入位图文件头
- fwrite(&bih, , sizeof(BITMAPINFOHEADER), fp); //写入位图信息头
- byte * p = new byte[bmp.bmWidthBytes * bmp.bmHeight]; //申请内存保存位图数据
- GetDIBits(memDC.m_hDC, (HBITMAP) memBitmap.m_hObject, , rect.Height(), p,
- (LPBITMAPINFO) &bih, DIB_RGB_COLORS); //获取位图数据
- fwrite(p, , bmp.bmWidthBytes * bmp.bmHeight, fp); //写入位图数据
- delete [] p;
- fclose(fp);
- memDC.SelectObject(oldmemBitmap);
- memDC.DeleteDC();
- }
[MFC] MFC 获取指定窗口截图(大小可调)的更多相关文章
- WinAPI: GetClassName - 获取指定窗口的类名
WinAPI: GetClassName - 获取指定窗口的类名 //声明: GetClassName( hWnd: HWND; {指定窗口句柄} lpClassName: PChar; {缓冲区} ...
- CSS3_盒阴影_倒影_盒子大小可调
1. 盒阴影 会产生一个或者多个阴影 使用: (多个阴影,以逗号隔开) /* (不能为负值) (可以负值) */ /* 水平方向偏移量 垂直反向偏移量 模糊程度 扩散程度 颜色 是否是内阴影; ...
- MFC中获取各个窗口之间的句柄或者指针对象的方法
MFC在非常多的对话框操作中,我们常常要用到在一个对话框中调用还有一个对话框的函数或变量.能够用例如以下方法来解决. HWND hWnd=::FindWindow(NULL,_T("S ...
- C# 非顶端窗口截图 - 用于查找指定窗口并截图
原文地址:http://blog.csdn.net/u013096568/article/details/53400389 panel上可以通过DrawToBitmap截图,不管是否在屏幕外是否有遮挡 ...
- MFC获取各窗口指针句柄
MFC在很多的对话框操作中,我们经常要用到在一个对话框中调用另一个对话框的函数或变量.可以用如下方法来解决. HWND hWnd=::FindWindow(NULL,_T("Sphere ...
- (转载博文)MFC 窗口句柄获取
句柄获取方法(获取该窗口的句柄后,即可向该窗口类类发送消息.处理程序):0.获取所在类窗口的句柄: this->m_hwnd 1.主窗口的句柄: 无论在主窗口类内,还是子窗口类内,获取主窗口句柄 ...
- MFC中无标题栏窗口的移动
原文链接: http://blog.sina.com.cn/s/blog_6288219501015dwa.html 移动标准窗口是通过用鼠标单击窗口标题条来实现的,但对于没有标题条的窗口,就需要 ...
- MFC应用程序创建窗口的过程 good
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- MFC中的主窗口修改标题
MFC中的主窗口修改标题 如何去掉“无标题”1.在主程序中的InitInstance(): m_pMainWnd->SetWindowText("你要显示的东西如果不想显示置空就行&q ...
随机推荐
- Python str方法总结
1.返回第一个字母大写 S.capitalize(...) S.capitalize() -> string 1 2 3 4 >>>a = 'shaw' >>> ...
- VC++ CEdit
CEDIT _1, //selection pEdit1->SetSel(0,strBuffer - m_strInput,0); pEdit1->SetFocus(); //the se ...
- VC++ 关于 ON_UPDATE_COMMAND_UI 相关的作用.
ON_COMMAND_RANGE(ID_SORTING_GROUPBYTYPE, ID_SORTING_SORTBYACCESS, OnSort) ON_UPDATE_COMMAND_UI_RANGE ...
- buildroot 使用小记 - 2 源文件目录结构
官方下载下来的buildroot源码包在解压后,是一个名为buildroot的文件夹,它下面的目录/文件结构如下: Makefile - 顶级makefile,编译总入口 Config.in - 顶级 ...
- vsftpd基于pam_mysql的虚拟用户机制
何为vsftpd? vsftpd:very secure ftp daemon 程序:/usr/sbin/vsftpd 配置文件:/etc/vsftpd/vsftpd.conf 其用户分为:匿名用户( ...
- Selenium2+python自动化14-iframe
前言 有很多小伙伴在拿163作为登录案例的时候,发现不管怎么定位都无法定位到,到底是什么鬼呢,本篇详细介绍iframe相关的切换 以http://mail.163.com/登录页面10为案例,详细介绍 ...
- mac--mac杂记
zsh路径补全.命令补全,命令参数补全,插件内容补全等等.触发补全只需要按一下或两下tab键,补全项可以使用ctrl+n/p/f/b上下左右切换. plugins=(git textmate ruby ...
- mysql 大小写 整理
mysql字段的值默认不区分大小写,如果有主键的表,主键列就不能插入重复的值(大小写不同) 实验 默认方式创建 CREATE TABLE `t1` ( `ID` varchar(40) CHARACT ...
- SQLServer 脚本测试
最近在做大数据同步的工作.很少数据需要特殊清洗算法,每次测试,都测试全部数据,浪费时间,可以只测试那些特殊数据即可(切记).
- Linux下设置网卡随系统启动
在GUI下安装RHEL,在配置网卡的时候,有时候会忘了勾选网卡随系统自动启动,解决方法是系统启动后,打开网卡配置文件/etc/sysconfig/network-script/ifcfg-eth*,将 ...