MFC截图程序的实现(八)

时间:2022-09-14 17:02:34

  这篇文章将前面讲的都融合在一起,形成一个新的程序。前面将来两种窗口截图的实现方法,一种是获得待截图的窗口句柄后,直接用Bitblt复制图像;另一种是获得待截图的窗口句柄后,只提取其中的窗口位置信息(即一个矩形的范围),在根据这个范围进行截图。

  两种方法各有优缺点。前者可以准确地截取目标窗口的图像,即使目标窗口上面还有其他窗口也不会影响截图效果,但是在某些窗口会出错,例如截取WIn7打开Aero特效下的任务栏是背景会变成黑色。后则能够完整的截图,但是当目标窗口之上有窗口覆盖时,覆盖窗口也会被截图包入其中。

  综合以上所述,将这两种方法都写到了程序中。用Radio区分模式1(对应第一种方法)和模式2(对应第二种方法).

  另外,还有几点说明:

1、为了程序的便捷性,用INI文件储存程序的配置信息(目前就一个:即为截图的保存路径)。

2、至于截图的文件名,采用截图时的时间作为文件名。例如截图时间是2014年6月13日13点49分25秒,则文件名为“20140613134825.bmp”。

3、上述两点涉及到的函数都在以下几篇文章中:INI文件操作获取程序所在的文件夹路径使用CTime类 获取当前时间弹出文件夹选择对话框

5、本程序截图时自动复制一份至剪切板。

6、完整源代码:http://download.csdn.net/detail/wwkaven/7493267

7、最后贴几张程序的运行图:

MFC截图程序的实现(八)

界面图


MFC截图程序的实现(八)

模式1


MFC截图程序的实现(八)

模式2


MFC截图程序的实现(八)

模式1


MFC截图程序的实现(八)

模式2