Windows消息机制

1、消息

(1)消息

是Windows发出的一个通知,告诉应用程序某个事情发生。Windows中,消息使用同一的结构体来存放消息。

typedef struct tagMSG{
    HWND hwnd;				//窗口句柄
    UINT message;			//消息常量标识符
    WPARAM wParam;			//32位消息的特定附加消息
    LPARAM lParam;			//32位消息的特定附加消息
    DWORD time;				//消息创建的时间
    POINT pt;					//消息创建时的鼠标位置
}MSG;
typedef struct POINT{
	int x;
	int y;
};

参数:

  • hwnd:32位窗口句柄。窗口可以是任何类型的屏幕对象,如窗口、对话框、按钮、编辑框等
  • message:用于区别其他消息的常量值,即用来表明消息的意义,在Windows中,消息是由一个数值来表示的,不同的消息对应不同的数值。通常是以WM_XX宏表示消息,如字符消息WM_CHAR。
  • wParam:通常是一个与消息有关的常量值,也可能是窗口或控件的句柄
  • lParam:通常是指向内存中数据的指针。和wParam实际为unsigned int和long
  • pt:消息创建时的鼠标位置

 

(2)消息分类

        从消息的来源来看,可以分为:系统定义的消息和应用程序定义的消息。系统消息ID的范围是从0到WM_USER-1,或0X80000到0XBFFFF;应用程序消息从WM_USER(0X0400)到0X7FFF,或0XC000到0XFFFF;WM_USER到0X7FFF范围的消息由应用程序自己使用;0XC000到0XFFFF范围的消息用来和其他应用程序通信,为了ID的唯一性,使用::RegisterWindowMessage来得到该范围的消息ID。

  • a、窗口消息:即与窗口的内部运作有关的消息,如创建窗口,绘制窗口,销毁窗口等。
  • 可以是一般的窗口,也可以是MainFrame,Dialog,控件等。 如:WM_CREATE, WM_PAINT, WM_MOUSEMOVE, WM_CTLCOLOR, WM_HSCROLL等
  • b、命令消息(WM_COMMAND):当用户从菜单选中一个命令项目、按下一个快捷键或者点击工具栏上的一个按钮,都将发送WM_COMMAND命令消息。
  • c、控件通知:WM_NOTIFY为扩展WM_COMMAND消息。
  • d、自定义消息:使用SendMessage和PostMessage发送消息

注:常用Windows消息

  • e、消息调用窗口时的输出参数:

句柄:唯一地标识窗口的32位值,该值引用一个数据结构,包含窗口的大小、风格、屏幕上的位置。

消息ID:用来标识消息类型的一个数值WM_CREATE、WM_PRINT等。

wParam + lParam:包含特定消息类型的信息。如,当一个WM_LBUTTONDOWN消息到达时,wParam保存一系列位标志来标识Ctrl和Shift键及鼠标按钮的状态。当鼠标单击发生时,lParam保存两个16位值来标识鼠标指针的位置。这些参数一起向窗口过程提供他所需要的处理WM_LBUTTONDOWN消息的所有信息。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值