`
Riddick
  • 浏览: 640208 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Windows的消息机制

阅读更多

 

       Windows是一个消息(Message)驱动系统。Windows的消息提供了应用程序之间、应用程序与Windows系统之间进行通信的手段。应用程序想要实现的功能由消息来触发,并且靠对消息的响应和处理来完成。
       Windows系统中有两种消息队列:系统消息队列和应用程序消息队列。计算机的所有输入设备由Windows监控。当一个事件发生时,Windows先将输入的消息放入系统消息队列中,再将消息拷贝到相应的应用程序消息队列中。应用程序的消息处理程序将反复检测消息队列,并把检测到的每个消息发送到相应的窗口函数中。这便是一个事件从发生至到达窗口函数必须经历的过程。
       必须注意的是,消息并非是抢占性的,无论事件的缓急,总是按照到达的先后派对,依次处理(一些系统消息除外),这样可能使一些实时外部事件得不到及时处理。

Windows中的消息是放在对应的进程的消息队列里的。可以通过GetMessage取得,并且对于一般的消息,此函数返回非零值,但是对于WM_QUIT消息,返回零。可以通过这个特征,结束程序。当取得消息之后,应该先转换消息,再分发消息。所谓转换,就是把键盘码的转换所谓分发,就是把消息分发给对应的窗口,由对应的窗口处理消息,这样对应窗体的消息处理函数就会被调用。两个函数可以实现这两个功能:TranslateMessage和DispatchMessage。
       另外,需要注意,当我们点击窗口的关闭按钮关闭窗口时,程序并没有自动退出,而是向程序发送了一个WM_DESTROY消息(其实过程是这样的,首先向程序发送WM_CLOSE消息,默认的处理程序是调用DestroyWindow销毁窗体,从而引发WM_DESTROY消息),此时在窗体中我们要响应这个消息,如果需要退出程序,那么就要向程序发送WM_QUIT消息(通过PostQuitMessage实现)。一个窗体如果想要调用自己的消息处理函数,可以使用SendMessage向自己发消息。
       如上所述,大部分(注意是大部分)的消息是这样传递的:首先放到进程的消息队列中,之后由GetMessage取出,转换后,分发给对应的窗口。这种消息成为存储式消息。存储式消息基本上是使用者输入的结果,以击键(如WM_KEYDOWN和WM_KEYUP讯息)、击键产生的字符(WM_CHAR)、鼠标移动(WM_MOUSEMOVE)和鼠标按钮(WM_LBUTTONDOWN)的形式给出。存储式消息还包含时钟消息(WM_TIMER)、更新消息(WM_PAINT)和退出消息(WM_QUIT)。但是也有的消息是直接发送给窗口的,它们被称为非存储式消息。例如,当WinMain调用CreateWindow时,Windows将建立窗口并在处理中给窗口消息处理函数发送一个WM_CREATE消息。当WinMain调用ShowWindow时,Windows将给窗口消息处理函数发送WM_SIZE和WM_SHOWWINDOW消息。当WinMain调用UpdateWindow时,Windows将给窗口消息处理函数发送WM_PAINT消息。

 

分享到:
评论

相关推荐

    Windows消息机制.pdf

    Windows消息机制是Windows操作系统的核心组成部分之一,它允许应用程序之间以及应用程序内部进行通信和数据交换。Windows消息是一个通知,表示有一个特定的事件发生了,例如鼠标点击、按键按下、窗口尺寸改变等。...

    Windows消息机制

    ### Windows消息机制详解 #### 一、Windows消息机制概述 Windows消息机制是Windows操作系统的核心组成部分之一,用于在各个进程或线程之间传递信息。通过这一机制,不同的应用程序或线程可以互相通信,实现数据...

    Windows 消息机制

    **Windows消息机制** Windows消息机制是Windows操作系统中用于进程间通信和线程间通信的核心机制。它是基于事件驱动的,允许应用程序对用户交互、系统事件以及其他进程发送的通知进行响应。在Windows程序设计中,...

    Windows消息机制要点

    Windows消息机制是Windows操作系统核心组件之一,用于处理应用程序与用户之间的交互。这一机制确保了GUI(图形用户界面)程序的响应性和同步性。下面将详细解释Windows消息机制的关键要点。 首先,每个窗口都有一个...

    windows消息机制

    Windows消息机制是操作系统的核心组成部分,它是Windows应用程序之间以及应用程序与操作系统之间进行通信的主要方式。在Windows环境下,所有的用户界面交互,如键盘输入、鼠标点击、窗口移动等,都会被转换成特定的...

    Windows消息机制视频

    Windows消息机制是Windows操作系统核心部分的一个重要组成部分,它在应用程序与操作系统之间起到了桥梁的作用,使得程序可以接收并处理来自用户的输入和其他系统事件。这个视频教程应该是深入解析了这一主题,帮助...

    Windows消息机制简介

    windows消息机制简单介绍,对消息过程的简单介绍和解释

    Windows消息机制及HOOK应用

    ### Windows消息机制及HOOK应用 #### 一、Windows事件驱动机制 Windows操作系统采用了与DOS截然不同的编程模型。在DOS环境下,程序通常按照顺序执行或者基于过程调用来驱动程序流程,而Windows则采取了事件驱动的...

    MFC Windows 消息机制 资料

    MFC Windows 消息机制 资料 MFC Windows 消息机制是 Windows 操作系统的核心机制之一,它负责处理用户输入、窗口状态变化和其他事件的消息通知。下面是对该机制的详细解释和分析: 消息的组成 一个消息由三个部分...

    WinSDK编程(续)_windows消息机制

    本文将深入探讨Windows消息机制的概念、工作原理以及如何在实际编程中使用。 一、Windows消息机制概述 Windows消息机制是Windows操作系统提供的一种事件驱动模型。它通过消息队列、消息循环和消息处理函数来确保...

    键盘钩子-windows消息机制-抓取用户按下的每一个按键

    首先,我们要了解Windows消息机制。在Windows编程中,应用程序通过消息循环接收和处理用户输入、系统事件等。当用户按下键盘时,操作系统会创建一个键盘消息(如WM_KEYDOWN或WM_KEYUP),并将该消息放入与应用程序...

    windows消息机制及其应用.doc

    Windows消息机制是Windows操作系统核心组成部分,它在编程中起着至关重要的作用,特别是在构建交互式应用程序时。消息机制是Windows应用程序的基础,它负责处理用户与应用程序之间的交互,确保程序能够及时响应用户...

    Windows消息机制实例代码

    本文将深入探讨Windows消息机制,并通过一个VB.NET的实例代码来阐述`WM_COPYDATA`消息的使用。 Windows消息机制是基于消息队列的事件驱动模型。当用户与窗口进行交互,如点击鼠标、按下键盘或执行其他操作时,系统...

    windows的多线程消息机制

    首先,我们来看消息循环,它是Windows消息机制的核心。消息循环通常由`GetMessage`和`DispatchMessage`函数组成。`GetMessage`函数从消息队列中取出一个消息并将其存储在`MSG`结构中,如果队列中有消息,它会阻塞...

Global site tag (gtag.js) - Google Analytics