理解Windows消息处理机制
1. 消息处理机制简单介绍
Windows操作系统维护一个系统消息队列,同时系统给每个GUI线程提供一个线程消息队列,鼠标、键盘事件由鼠标或键盘驱动程序封装成消息并把消息放进系统消息队列中。Windows每次从系统消息队列移走一个消息,确定它是送给哪个窗口和这个窗口是由哪个线程创建的,线程接收到消息后将消息放到线程消息队列,并通过线程的消息循环依次从消息队列移出消息并派发给对应的窗口处理过程来处理。
2. Windows消息处理机制过程
Windows消息处理机制过程分为以下几个步骤:
① 操作系统捕获应用程序的某个事件,转化为消息后投递到应用程序的消息队列中;
② 应用程序调用GetMessage函数从消息队列中取出这条消息,然后对这条消息进行预处理;
③ 应用程序调用DispatchMessage函数将这条消息回传给操作系统;
④ 操作系统调用应用程序的窗口过程函数处理这条消息。
步骤②和③构成一个消息循环,在没有接到WM_QUIT消息时,Windows应用程序通过这个循环保证程序始终处于运行状态。
消息处理机制过程如下图所示: