windows程序开发窗口截图实现一

1.2编写窗口截图
    本次选择窗口截图一共3步:鼠标按下、移动、弹起。
知识点:改变鼠标图标、截图函数封装、窗口画图
本节新学习AIP:
	LoadCursor
	SetCursor(m_hCursor);
	SetCapture();
CreateDC
CreateCompatibleDC
CreateCompatibleBitmap
ClientToScreen
WindowFromPoint
CreateSolidBrush
FrameRect
…………………………………..

  

视频观看地址:

https://www.bilibili.com/video/av30091327/

视频语录:

大家好,我是Simon。
今天晚上我们开始来讲第二课,我们的第二个的话是开始编写一个窗口截图的一个功能,那么我这里就是列了他三步窗口截图,然后分别鼠标按下,然后是移动和弹起。
这里的话就是我们要学到的东西就是鼠标我们就是鼠标按下以后,在移动的过程中,我们去改变鼠标的一个图标。

第二个的话就是我们截图函数的一个封装。
第三的话就是窗口画图,就是说我们去选中哪一个窗口,然后我们用一个矩形框来将它显示出来,

我们学到的一个新的API有以下这些。

我们在具体代码编写中来熟悉这一些API的一个应用,那么这个文档的话我没有去详细做,我们一起在具体的一个程序设计中,我们来学这些函数怎么去用。

至于文档的话,到后期我如果有需要的话,给大家补一下,那么我们现在就开始打开我们上一节课的一个源码
内容比较多,估计这一节课我们可能讲不完。

这是我们上一节课讲的一个程序,这里的话我们应该再把它给销毁一下,用完以后我们记得销毁。上次保存图片的话是可以保存多种图片的,那么我们之前在帮助文档里面也看到过,那么大家自己去测试一下,首先我们这里看了一下三步,我们这里就先做鼠标按下的动作,那么鼠标按下的话,我们先添加一个按下去的一个消息,这个是点击按下鼠标按下。
先这样,我们先看在这个系统系统里面的工具,它这个是一个怎样的东西,我们是窗口截图,新建一个窗口截图。他这个点窗口截图的时候新建。可以看到它,这就选到我们一个全屏了,不过大家有没有看到有一个红色的边框,是选到了我们的全屏。我不知道这个是不是跟我们现在录像工具有冲突还是怎么回事,反正这里就是他应该是已经截到了。

好吧,我们还是来进入主题,鼠标按下按下以后,我们是说要这也是说要改变我们的一个改变我们鼠标形状。改变鼠标的话,我们是用这一个函数,这个函数是加载一个资源文件,我们先看一下帮助,
稍等一下。好,它这个的话是它是加载一个指定的一个资源文件,光标资源文件。

这里我看的也很辛苦,然后用这个翻译的话总是感觉很纠结,我们试一下去百度里面,这样吧,直接从百度去找可执行中指定的光标资源,然后这里是返回模块型,我们这里定义。

这个的话我看一下,我们直接用mfc父类,我们用去加载它,然后我们这里添加一个光标资源文件,那么这里的话我没有事先去准备,我们直接就用一个系统的一个资源文件,用一个指针的一个东西,这样一个图标。

就是说当我们鼠标按下去以后,它我们的鼠标形状就会变成这样子。这个编译一下这里。我们加载好以后,我们开始来设置它,这是我们刚才设置它设置完以后,我们要把这个消息接过来我们来查一下这个函数的功能,它是说当前线程指定窗口里设置鼠标,这个的话大家自己看一下。

我们这里设置完以后,这样的话我们可以这样我们可以去测试一下,我们先注册一下,看看我们的效果。然后我们是运行起来,就是说我的鼠标在这个窗口上面,然后点下去的时候,可以看到我的鼠标在左键点下去以后,它是没有任何变化的。

然后我们现在的话就是让他改变一下,然后让他直接变成一个指针,看看它是否有变化,我手表点。可以看到我们的鼠标已经改变了。改变了。但是可以看到我们就是点下去以后,鼠标弹起来,我们没有做动作,就是说我们没有释放资源为释放,所以我们的鼠标这个图形就一直没有释放掉。

然后就一直在按下过程中,然后我们这是一个程序就已经死掉了,然后看一下。这里设置完以后,设置完以后的话,我们肯定是要去释放掉它,我们再添加一个消息。也就是说它是鼠标谈起的消息,鼠标谈起以后,我们是要去将它进行一个示范。

将资源释放掉。这样的话我们的消息的话就到马上下去以后谈起就会把那个消息给示范。可以看到我们的鼠标已经改变。

弹起我们鼠标又回来,原来的一个形状,那么这个功能实现以后。

我们就开始对我们一个截图函数的一个封装。
这个函数的话,我们是写到鼠标移动的消息里面!光标移动的话,我们设计一个。

这样我们先判断一下,好吧?我们在这里的话添加一个变量,我们是用私有的布尔类型,然后我们来判断一下,然后判断它是否是截屏,然后我们开始来处理,那么我们这里的话按下以后我们在这里对变量进行判断一下。如果这里是的话,我们就对他进行截屏。截屏的话,我们设计一个函数,然后就叫做窗口截图好吧?

设计这样一个函数。那么我们这个函数的话,不要返回值了。参数我看一下截图。参数的话,我们这里一个传个指针进去,我们这里是在移动处理,对,我们把鼠标的一个位置给过传进去。对,我们就这样。

这里的话是把它的这一个。这里是在移动处理移动这里,对,我们把鼠标的一个位置给过传进去,对。我们就这样。这里的话是把它的这一个自己也闯进来能编译一下。然后就是这一个函数的一个编写了。我们这里的话传进来,传进我们的指针以后,然后我们将它进行一下转换,用函数这个函数的话,它是进行一个查一下,我们还是来看一下咱们百科怎么讲吧。可以看,他是把一个客户区的一个坐标转换到一个屏幕坐标,也就是说把它转化成整个屏幕坐标,屏幕坐标的话是从左上角开始,零零的位置,开始。算了。这里的话我们直接就进行转换一下,然后我们再得到一个鼠标位置的一个窗口句柄,然后我们看一下它返回,返回的就是一个句柄,然后这里我们再添加一个距离,句柄的话就用一个鼠标的一个居民。这里我们再添加一个区别一个看一下。然后我们在再对它进行一个判断。判断我们再看一下,做一个判断的话,就是说我们这个函数,我们的鼠标在随时的移动移动,我们会去不停地调用这个函数,然后我们这里的话要判断一下,看到我们这个句柄是不是为空?如果是为空,我们就继续往下来进行一个绘图。如果它不为空的话,就那说明他这个是已经在执行了,也就是说我们选定了一个目标在进行一个画图,那么我们就直接返回判断的话,我们是用这样我们这里再定义一个函数定义一个变量,变量的话还是一个句柄。我们添加一个这样的函数,然后等于它的话我们就直接返回,再或者的话它是等于自身或者是说我们的一个。直接返回,这个的话就是把它付给他。这一段话的意思就是说他对自身的话不不,截图请我们编一下。

那么这一节课的时间的话也差不多了,那么前面讲的这些大家到时候在看一看,后面这个函数的话是具体的一个设计的话,我们还是到后面再进行一个下节课我们再开始编写了这里。

看一下我们到这里来把给做一下初始化变量初始化我们要去养成一个好的习惯,好,那么这节课我们就讲到这里,那么主要就实现了一个鼠标按下移动谈起,实现了这三个消息的一个功能。

那么下一节课的话,我们在对一个截图函数来进行一个编写。

好,那么这节课我们就到这里,大家再见。

原文地址:https://www.cnblogs.com/simont/p/9523076.html

时间: 2024-11-09 05:13:51

windows程序开发窗口截图实现一的相关文章

MFC Windows程序开发究竟是什么?

MFC Windows程序开发究竟是什么? MFC是一个Application Framework.他是一个完整的程序模型. 什么是MFC?MFC是微软公司出品一个Application Framework.基本上,我们可以认为Application Framework就是一个完整的程序模型,具备标准软件所需的一切基本功能,比如文件存取.打印等等.从C++语言层面来看,Application Framework就是有一整套组合好的“对象”构建起来的模型.从C++语法上来说,MFC就是一套微软提供

Windows程序开发的背景知识---Windows消息机制

一,消息 消息(Message)指的就是Windows 操作系统发给应用程序的一个通知,它告诉应用程序某个特定的事件发生了.比如,用户单击鼠标或按键都会引发Windows 系统发送相应的消息.最终处理消息的是应用程序的窗口函数,如果程序没处理的话操作系统有默认函数将会作出处理.      从数据结构的角度来说,消息是一个结构体,它包含了消息的类型标识符以及其他的一些附加信息.系统定义的结构体MSG用于表示消息,MSG 具有如下定义形式: typedef struct MSG {      HWN

C语言Windows程序开发—MessageBox函数介绍【第01天】

(一)MessageBox函数的参数介绍: 1 int MessageBox ( 2 HWND hWnd, //弹出MessageBox对话框所属的窗口句柄 3 LPCTSTR lpText, //指向MessageBox对话框内容的字符串指针 4 LPCTSTR lpCaption, //指向MessageBox对话框标题的字符串指针 5 UINT uType //MessageBox对话框的风格 6 ) ; 函数调用示例: 1 MessageBox ( NULL, TEXT ("程序运行出错

C语言Windows程序开发—TextOut函数介绍【第02天】

(一)TextOut函数的参数介绍: 1 BOOL TextOut ( //如果函数调用成功,返回TRUE,否则,返回FALSE 2 HDC hdc, //用于显示字符串的控件ID 3 int nXStart, //字符串所在起始位置左上角(X,Y)的X坐标 4 int nYStart, //字符串所在起始位置左上角(X,Y)的Y坐标 5 LPCTSTR lpString, //显示的字符串内容 6 int cbString //字符串长度 7 ) ; 函数调用示例: 1 TextOut ( h

C语言Windows程序开发—CreateWindow函数介绍【第03天】

(一)CreateWindow函数的参数介绍: 1 HWND CreateWindow( 2 LPCTSTR lpClassName, //Windows窗口中预定义的控件结构体,包括:BUTTON(按钮),EDIT(文本框),LISTBOX(列表),MDICLIENT(子窗口),SCROLLBAR(滚动条),RICHEDIT(富文本),STATIC(静态控件): 3 LPCTSTR lpWindowName, //窗口控件中显示的内容,即Caption属性: 4 DWORD dwStyle,

Windows程序开发必须知道的几个注册表项

1.Windows服务程序列表位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services 2.卸载程序列表位置 32位系统 当前用户软件HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 所有用户软件HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 64位系统 当前用

Windows程序代码重构

代码重构:在程序功能实现之后,对代码进行一定规模的整理,使之符合"高内聚.低耦合"的软件设计原则,便于维护和使用. ①用函数封装消息处理代码--对Windows程序窗口函数中的每一个case程序段进行封装以形成一个消息处理函数,而在case中调用这个函数. ②利用数组或链表实现消息映射表进一步实现代码的隔离--因为窗口函数switch-case结构实质上实现的就是一个根据消息标识来查找消息处理代码的功能,故可以用消息映射表和一段查表程序来替代它,表中的每一项可以使用一个函数指针来指向消

Linux及Arm-Linux程序开发笔记(零基础入门篇)

Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer/archive/2011/05/05/2037449.html 目录 一.Arm-Linux程序开发平台简要介绍... 3 1.1程序开发所需系统及开发语言... 3 1.2系统平台搭建方式... 4 二.Linux开发平台搭建... 5 2.1安装虚拟工作站... 5 2.2安装Linux虚拟

Linux及Arm-Linux程序开发

一.Arm-Linux程序开发平台简要介绍 Arm-Linux程序的开发并不像我们以前接触的Windows程序开发那样,关于平台的搭建就繁琐很多,所以在正式进入程序开发之前先对这种开发模式进行简要介绍,让一个即使没有任何Linux开发经验的程序员也能够看懂后面的内容. 1.1程序开发所需系统及开发语言 开发arm-linux程序至少需要三种系统: Windows系统.     主要用来文件传送和一些简单的文本文件编辑.这个系统其实并非必需,只是因为目前PC机上最流行的系统仍然是Windows系统