zoukankan      html  css  js  c++  java
  • Windows操作系统的消息机制

    最近学习了下MFC,现在说说我对Windows操作系统的消息机制的了解。如有不对,请大家多多指正。

    什么是消息? 通俗的来讲,消息就是操作系统给应用程序的一个通知,它告诉应用程序一个事件的发生,如鼠标单击,键盘按下等。

    消息的组成:

    • hwnd  窗口句柄
    • message  消息常量标识符
    • lparam  通常是一个指向内存中数据的指针
    • wparam  通常是与一个消息有关的常量
    • time 消息创建的时间
    • pt 消息创建时鼠标的位置

    消息的分类:

    • 标准消息 标准消息以WM_开头
    • 通知消息 通知消息是在针对控件的消息,这些控件包括按钮、组合框、菜单等
    • 自定义消息 编程人员自己定义的消息

    消息系统的组成

    • 消息队列 Windows操作系统能为所有的应用程序都能维护一个消息队列,应用程序从消息队列中获取消息并分派给程序某个窗口。
    • 消息循环 应用程序运行后,会进入消息循环,在这个消息循环中,应用程序不断的从消息队列中获取相应的消息,并分派给应用程序相应的窗口。
    • 窗口过程 每个窗口都有一个窗口过程来接收传递给窗口的消息,它的任务是获取消息然后相应的处理它。

    Windows操作系统的消息控制

    • 第一级控制中心是Windows操作系统的内核,它维护着一个消息队列
    • 第二级控制中心是应用程序,它从消息队列中获取属于自己管辖的消息后做出处理。
    • 第三级控制中心是窗体对象,应用程序接收到消息后会传给主窗口处理,如果主窗口不处理消息,它会往下传递给子窗口或者子控件,如果子窗口或者子控件仍然没有处理,子窗口或者子控件又会把这个消息传递给它的子控件或者子窗口,一直往下传,如果最终没有处理,这个消息又开始按照相应的顺序往上传。
  • 相关阅读:
    sqlserver服务 正在挂起更改,导致无法打开或者停止服务
    menuStrip与toolStrip的使用
    sqlDataCommandBuilder为dataGridView自动生成增删改代码时报错
    visual studio属性面板解释文字看不见
    窗体句柄 控件句柄
    form窗体show不出来
    TextBox密码框变文本框,文本框变密码框
    DataSet数据集手动添加一行记录
    Anaconda3-更换为清华源后依旧报错CondaHTTPError: HTTP 000 CONNECTION FAILED
    Kali Linux 国内源
  • 原文地址:https://www.cnblogs.com/Trony/p/2240180.html
Copyright © 2011-2022 走看看