截取当前桌面并保存图像

截取当前桌面并保存图像

#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <atlimage.h>
#include <Windows.h>
using namespace std;
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )  // 设置连接器选项
//加入上面这句可以取消控制台显示
int main(int argc, _TCHAR* argv[])  
{  
	HDC hDc,memDc;
	hDc = GetDC(GetDesktopWindow());//取得桌面设备 hdc
	memDc = CreateCompatibleDC(hDc);//创建与HDC(桌面)兼容的设备memDc
	HBITMAP hBitMap;
	HWND hWnd = GetDesktopWindow();//得到桌面句柄
	RECT rect;
	GetWindowRect(hWnd,&rect);//桌面的矩形
	int width = rect.right-rect.left;//桌面的宽
	int hight = rect.bottom-rect.top;//桌面的高
	hBitMap = CreateCompatibleBitmap(hDc,width,hight);//创建与桌面兼容的画布
	SelectObject(memDc,hBitMap);//关联设备和画布
	BitBlt(memDc,0,0,width,hight,hDc,0,0,SRCCOPY);//吧桌面往兼容设备里复制
	//一个设备(笔,画刷....) ,再准备一张画布(一个内存空间), 就可以作画了. 要真正的得到一个图, 总要有东西把原图放进去吧. 所以有了, 兼容的设备和画布.
	CImage mImage;
	mImage.Attach(hBitMap);         
	mImage.Save(L"d:/1.jpg");//保存图像
	system("pause");
	return 0;  
}  



获得当前应用窗口截图


POINT	pt;
	GetCursorPos(&pt);
	HWND	hpWnd=NULL, hcWnd=NULL;
	hpWnd = ::WindowFromPoint( pt );
	if( IsWindow(hpWnd) )
		hcWnd = ::ChildWindowFromPointEx( hpWnd, pt, CWP_ALL  );

	if( IsWindow( hcWnd ) == FALSE )
		hcWnd = hpWnd;
	HDC hDc,memDc;
	hDc = GetDC(hcWnd);//取得桌面设备 hdc
	memDc = CreateCompatibleDC(hDc);//创建与HDC(桌面)兼容的设备memDc
	HBITMAP hBitMap;
	//HWND hWnd = GetDesktopWindow();//得到桌面句柄
	RECT rect;
	GetWindowRect(hcWnd,&rect);//桌面的矩形
	int width = rect.right-rect.left;//桌面的宽
	int hight = rect.bottom-rect.top;//桌面的高
	hBitMap = CreateCompatibleBitmap(hDc,width,hight);//创建与桌面兼容的画布
	SelectObject(memDc,hBitMap);//关联设备和画布
	BitBlt(memDc,rect.left,rect.top,width,hight,hDc,0,0,SRCCOPY);//吧桌面往兼容设备里复制
	//一个设备(笔,画刷....) ,再准备一张画布(一个内存空间), 就可以作画了. 要真正的得到一个图, 总要有东西把原图放进去吧. 所以有了, 兼容的设备和画布.
	CImage mImage;
	mImage.Attach(hBitMap);         
	mImage.Save(L"d:/1.jpg");//保存图像

截取前


截取后


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值