美文网首页
Windows消息

Windows消息

作者: 7bfedbe4863a | 来源:发表于2018-07-18 09:33 被阅读0次

定义

windows消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。这个记录类型在C++叫做MSG,在DelPhi中为TMsg。

附:Delphi和C/C++数据类型对照表
https://blog.csdn.net/edisator/article/details/42804045

MSG

typedef struct tagMSG {
    HWND        hwnd;      //消息所属的窗口句柄
    UINT        message;   //消息类型标识符,Windows将消息对应的数值定义为WM_XXX宏,比如:鼠标左键按下消息是WM_LBUTTONDOWN,键盘按下消息是WM_KEYDOWN,字符消息是WM_CHAR,等等
    WPARAM      wParam;    //消息附加内容,通常是一个与消息有关的常量值,也可能是窗口或控件的句柄
    LPARAM      lParam;    //消息附加内容, 通常是一个指向内存中数据的指针。wParam、lParam表示的信息随消息的不同而不同。
    DWORD       time;      //投递到消息队列的时间
    POINT       pt;         //鼠标的当前位置
#ifdef _MAC
    DWORD       lPrivate;
#endif
} MSG, *PMSG, NEAR *NPMSG, FAR *LPMSG;

附:消息标识符常量具体介绍见:https://www.jianshu.com/p/4bb349b170d1

消息分类

1.系统定义消息(System-Defined Messages)
(1)标准消息
除WM_COMMAND之外,所有以WM_开头的消息都是标准消息,如窗口、鼠标移动、窗口大小改变等,程序启动或退出甚至每一段固定的时间都会产生标准Windows消息。
1) 键盘消息
对于窗口而言,来自用户的按键输入可分为两类,一类是系统键,另一类则是非系统键。

ALT和其它键一同按下的组合称为“系统键”,窗口收到系统键之后,会自动地将它解释成系统事件,或者查阅键盘加速表,将系统键翻译成加速表指定的信息。

2)鼠标消息
当鼠标在某个窗口内移动时,Windows会不断地发出鼠标移动消息WM_MOUSEMOVE,并把鼠标的最新位置传给该窗口。如果在窗口的范围内按下鼠标左键,系统就会发出“按下左键”的WM_LBUTTONDOWN消息给该窗口,等到用户放开按键后,再发出“放开左键”的WM_LBUTTONUP消息给该窗口。

afx_msg void OnMouseMove(UINT nFlags, CPoint point);

其中,nFlags为此事件发生时,鼠标按键、键盘控制键的状态,可以是以下值的任意组合:
当用户按下CTRL键时,nFlags设置为MK_CONTROL。
当用户按下鼠标左键时,nFlags设置为MK_LBUTTON。
当用户按下鼠标中键时,nFlags设置为MK_MBUTTON。
point为鼠标的位置

(2)命令消息
来自菜单,加速键或工具栏按钮的消息。这类消息都以WM——COMMAND形式呈现。WM_COMMAND, LOWORD(wParam)表示菜单项,工具栏按钮或一般控件的ID如编辑框,按钮等。如果是控件, HIWORD(wParam)表示控件消息类型

(3)通告消息
由复杂控件产生的消息。这类消息也是以WM——COMMAND形式呈现。 这是最灵活的消息格式, 其Message, wParam, lParam分别为:WM_NOTIFY, 控件ID,指向NMHDR的指针。NMHDR包含控件通知的内容, 可以任意扩展

2.程序定义消息(Application-Defined Messages)
 用户自定义的消息, 对于其范围有如下规定:
 WM_USER: 0x0400-0x7FFF (ex. WM_USER+10)

相关文章

  • Windows消息

    定义 windows消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。例如,单击鼠标、改变窗口...

  • windows消息机制(MFC)

    windows消息机制(MFC) 消息分类与消息队列 Windows中,消息使用统一的结构体(MSG)来存放信息,...

  • Windows 常用消息大全

    Windows 常用消息大全 表A-1 Windows消息分布 消息范围说 明 0 ~ WM_USER – 1系统...

  • Windows消息钩取

    下钩子函数: 钩子的过程需要在DLL内部 dwThreadId为0时 钩子为全局钩子 hMod就当成dll的句柄(...

  • WPF 路由事件 与 命令

    事件 事件的前身是消息(在窗体点左键会生成一条携带参数的消息加入windows待处理消息队列,当windows处理...

  • 每日总结-第三十七天-DLL注入

    参考文献 逆向工程核心原理 Windows消息勾取 消息钩子 Windows操作系统向用户提供GUI,它以事件驱动...

  • iOS触摸事件专题一

    事件的概念类似Windows 编程下的消息。 iOS中的事件响应也和Windows下的消息循环机制相似,当用户触发...

  • Windows 安装 RocketMQ

    一、RocketMQ 介绍 1、消息顺序2、消息重复消费3、事务消息 二、RocketMQ 安装 Windows:...

  • 【翻译】Windows消息体系

    Most of the fresh software engineers and .NET developers ...

  • 面试——Windows消息队列

    结合前段时间经历,整理相关问题,绝大部分抄自《Windows核心编程》第26章 消息队列是在什么时候创建的? 当一...

网友评论

      本文标题:Windows消息

      本文链接:https://www.haomeiwen.com/subject/xgnnpftx.html