MFC保存窗口客户区为图片

首先的窗口输出一些内容;

菜单单击函数代码;

cpp 复制代码
void CgetmypicView::OnTestGetmypic()
{
	// TODO: 在此添加命令处理程序代码
	HWND hwnd = this->GetSafeHwnd();
	HDC hDC = ::GetWindowDC(hwnd);//获取DC       

	RECT rect;
	::GetClientRect(hwnd, &rect);//获取客户区大小  
	HDC hDCMem = ::CreateCompatibleDC(hDC);//创建兼容DC  

	HBITMAP hBitMap = ::CreateCompatibleBitmap(hDC, rect.right, rect.bottom);//创建兼容位图  
	HBITMAP hOldMap = (HBITMAP)::SelectObject(hDCMem, hBitMap);//将位图选入DC。并保存返回值  

	::BitBlt(hDCMem, 0, 0, rect.right, rect.bottom, hDC, 0, 0, SRCCOPY);//将图象拷贝到内存DC中  

	CImage image;
	image.Attach(hBitMap);
	image.Save(_T("e://myshige.jpg"));//假设文件后缀为.bmp,则保存为为bmp格式  
	image.Detach();

	::SelectObject(hDCMem, hOldMap);//选入上次的返回值  

									//释放  
	::DeleteObject(hBitMap);
	::DeleteDC(hDCMem);
	::DeleteDC(hDC);
}

单击菜单之后在磁盘生成图片文件,打开如下;

相关推荐
老歌老听老掉牙5 分钟前
C++使用Qt Charts创建数据可视化图表
c++·qt·信息可视化
爽帅_1 小时前
【C++】STL库_stack_queue 的模拟实现
开发语言·c++
。。。9041 小时前
C++中,应尽可能将引用形参声明为const
开发语言·c++
云边有个稻草人1 小时前
【C++】第九节—string类(中)——详解+代码示例
开发语言·c++·迭代器·string类·string的常用接口·string的模拟实现·string的经典例题
愚戏师10 小时前
软件工程(应试版)图形工具总结(二)
数据结构·c++·python·软件工程
owde10 小时前
顺序容器 -forward list单链表
数据结构·c++·list
矛取矛求10 小时前
C++ 标准库参考手册深度解析
java·开发语言·c++
lmy2012110810 小时前
GESP:2025-3月等级8-T1-上学
c++·算法·图论·dijkstra
٩( 'ω' )و26010 小时前
stl_list的模拟实现
开发语言·c++·list
&Sinnt&10 小时前
C++/Qt 模拟sensornetwork的工作
c++·qt