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);
}

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

相关推荐
我是华为OD~HR~栗栗呀30 分钟前
华为od-21届考研-C++面经
java·c语言·c++·python·华为od·华为·面试
oioihoii38 分钟前
C++ 中的类型转换:深入理解 static_cast 与 C风格转换的本质区别
java·c语言·c++
小妖6661 小时前
vscode 怎么运行 c++ 文件
开发语言·c++
lingran__1 小时前
算法沉淀第三天(统计二进制中1的个数 两个整数二进制位不同个数)
c++·算法
小冯记录编程2 小时前
深入解析C++ for循环原理
开发语言·c++·算法
磨十三2 小时前
C++ 容器详解:std::list 与 std::forward_list 深入解析
开发语言·c++·list
今麦郎xdu_3 小时前
【Linux系统】命令行参数和环境变量
linux·服务器·c语言·c++
情深不寿3174 小时前
C++特殊类的设计
开发语言·c++·单例模式
Vanranrr5 小时前
nullptr vs NULL:C/C++ 空指针的演变史
c语言·c++
切糕师学AI5 小时前
【多线程】阻塞等待(Blocking Wait)(以C++为例)
c++·多线程·并发编程·阻塞等待