消息响应函数OnMouseMove是怎么调用的
书上说,只要鼠标在窗口中移动就会调用OnMouseMove函数,但是具体是怎么调用的呢?调用了多少次呢?...
书上说,只要鼠标在窗口中移动就会调用OnMouseMove函数,但是具体是怎么调用的呢?调用了多少次呢?
展开
展开全部
鼠标移动,系统会向与鼠标有重叠的窗口发送,鼠标移动消息,进程有一个消息队列,就是用来接收各种消息。。。进程的入口程序叫做winmain,他会有一个消息处理循环,就是读各种消息,然后根据消息所属窗口,发送给窗口过程函数(所有窗口都有一个用于消息处理的回调函数,有dispathmessage()这个函数回调,这是windows系统的一个API函数)。。。。窗口过程函数接到消息,就会处理消息,你的操作可以再消息处理中进行,但通常编程软件不这么做,窗口过程只做一件事就是,置位事件(一个WINDOWS内核对象,需要向windows申请创建,可以理解为一个开关)。。。。
窗口处理函数处理后返回,winmain就会调用事件处理函数,这个函数里存有各种类似OnMouseMove,这样的函数的函数指针,每当他发现某事件置位,他就会调用相关的回调函数。。
具体过程,鼠标移动->鼠标向系统发送消息->系统根据鼠标位置向拥有改窗口的进程发送消息->
进程中消息循环得到消息并调用dispathmessage()->dispathmessage()分析后根据消息所属窗口调用窗口处理函数->窗口处理函数置位对应事件信号退出处理->winmain调用事件处理函数->
事件处理函数调用OnMouseMove。。。。。就是这么个过程,不过在窗口处理函数之前的步骤是必须的,是windows系统的处理机制,之后的是软件为了提高程序效率加的。。。。
现在的编程软件都非常智能,你只需要向OnMouseMove内些内容,其他代码都是自动生成。。。。
窗口处理函数处理后返回,winmain就会调用事件处理函数,这个函数里存有各种类似OnMouseMove,这样的函数的函数指针,每当他发现某事件置位,他就会调用相关的回调函数。。
具体过程,鼠标移动->鼠标向系统发送消息->系统根据鼠标位置向拥有改窗口的进程发送消息->
进程中消息循环得到消息并调用dispathmessage()->dispathmessage()分析后根据消息所属窗口调用窗口处理函数->窗口处理函数置位对应事件信号退出处理->winmain调用事件处理函数->
事件处理函数调用OnMouseMove。。。。。就是这么个过程,不过在窗口处理函数之前的步骤是必须的,是windows系统的处理机制,之后的是软件为了提高程序效率加的。。。。
现在的编程软件都非常智能,你只需要向OnMouseMove内些内容,其他代码都是自动生成。。。。
追问
意思是,只要鼠标移动了位置就会发送一次消息,就会调用一次OnMouseMove吗?
追答
就是这样,不过这一切都是从鼠标驱动发送消息开始的。。。你写的长须不光是运行你写的代码,还有软件提供的框架代码,你的所有程序都是通过框架代码调用的,框架的代码你不用写。。。。
这种事编的越来越简单,到JS,只要在事件下写代码就行,但主要是框架人家弄好了,你就想做填空题一样。。。但实际上的过程都一样,都是我说的这个过程。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询