你多少岁不重要,看起来像几岁才重要,不要把辛苦和怨气都挂在脸上,你想要最好的生活,就先让生活看到最好的你。。。。
---- 网易云热评
一、程序执行机制
1、过程驱动 - 程序的执行过程是按照预定好的顺序执行。
2、事件驱动 - 程序的执行是无序,用户可以根据需要随机触发相应的事件。
3、Win32窗口程序就是采用 事件驱动 方式执行,也就是 消息机制。
4、当系统通知窗口工作时,就采用消息的方式派发给窗口。
二、消息组成(windows平台下)
窗口句柄
消息ID 0-1023
消息的两个参数(两个附带信息)
消息产生的时间
消息产生时的鼠标位置
三、窗口处理函数和消息
1、每个窗口都必须具有窗口处理函数。
2、当系统通知窗口时,会调用窗口处理函数同时,将消息ID和消息参数传递给窗口处理函数。
3、在窗口处理函数中,不处理的消息,使用默认窗口处理函数,例如DefWindowProc。
四、消息相关函数
1、GetMessage - 获取消息
lpMsg - 当获取到消息后,将消息的参数存放到MSG结构中。
hWnd - 获取到hWnd所指定窗口的消息。
wMsgFilterMin和wMsgFilterMax -只能获取到由它们指定的消息范围内的消息,如果都为0,表示没有范围。
2、TranslateMessage - 翻译消息。将按键消息,翻译成字符消息。
检查消息是否是按键的消息,如果不是按键消息,不做任何处理,继续执行。
3、DispatchMessage - 派发消息。将消息派发到该消息所属窗口的窗口处理函数上
五、windows常用消息
1、WM_DESTROY:窗口被销毁时的消息,无消息参数。常用于在窗口被销毁之前,做相应的善后处理,例如资源、内存等。
2、WM_SYSCOMMAND:系统命令消息,当点击窗口的最大化、最小化、关闭等命令时,收到这个消息。常用在窗口关闭时,提示用户处理。
wParam:具体点击的位置,例如关闭SC_CLOSE等.
lParam:鼠标位置
LOWORD:低字,水平位置
HIWORD:高字,垂直位置
3、WM_CREATE:在窗口创建成功还未显示之前,收到这个消息。常用于初始化窗口的参数、资源等等,包括创建子窗口等。
WPARAM:不使用,LPARAM:是CREATESTRUCT结构的指针,保存了CreatWindowEx中的12个参数。
4、WM_SIZE:在窗口的大小发生变化后,会收到WM_SIZE。常用于窗口大小变化后,调整窗口内各个部分的布局。
WPARAM:窗口大小变化的原因。
LPARAM:变化窗口客户区的大小
LOWORD:变化后的宽度
HIWORD:变化后的高度
5、WM_QUIT:用于结束消息循环处理。
wParam:PostQuitMessage 函数传递的参数。
lParam:不使用,当GetMessage收到这个消息后,会返回FALSE, 结束while处理,退出消息循环。
6、WM_PAINT:绘图消息 键盘消息 鼠标消息 定时器消息
7、相关代码
8、运行结果
欢迎关注公众号:顺便编点程