Windows内部运行机制
- 创建窗口的五步:注册窗口类 – 创建窗口 – 显示更新窗口 – 消息循环 – 处理消息
- 应用程序向操作系统注册窗口类:告诉操作系统我们的窗口长成什么样子,例如图标是什么、光标是什么、窗口尺寸多大等等:窗口类名就是用来标识窗口类的
窗口消息
进队消息 vs 不进队消息
进队消息
由Windows操作系统放入应用程序的消息队列中的。在应用程序的消息循环中,应用程序获取到消息对象(GetMessage()),然后应用程序又把它给了操作系统,操作系统将消息传给了窗口过程处理函数。不进队消息
在Windows操作系统调用窗口直接送给窗口过程函数进队消息
是给了应用程序的消息队列;不进队消息是直接给了应用程序的窗口过程函数- 多数情况下,
进队消息
是来自于用户输入的结果,比如几盘击键、鼠标移动或鼠标单击消息等,进队消息
还包括时钟消息、刷新消息和退出消息等 - 多数情况下,
不进队消息
是来自于调用特定的Windows函数,例如CreateWindow()函数内部会发送WM_CREATE消息、GetWindowText()函数内部会发送WM_GETTEXT消息获取标题内容;SendMessage()发送自定义的消息是不进队消息,直接发送给窗口过程函数处理
消息循环
- USER Module模块知道当前的活动窗口是谁,该模块将操作系统中的消息队列(System message queue)的消息取出来发送给应用程序的消息队列(Application message queue)