今天看了一下消息处理机制,为了防止日后忘记,就把自己的理解写上博客
1.首先,任何消息都会传递给操作系统,之后操作系统就把消息投递到消息队列。
2.在消息队列里面,按照消息的顺序和权值用GetMessage()取出消息交给应用程序。
3.把消息取出来后,应用程序会先做一些预处理,例如是放弃某些消息的响应或者调用TranslateMessage()产生新的消息。至于为什么调用该函数,其实该函数是主要处理我们输入的键信息。我们每敲一个字符键时,都会产生WM_KEYDOWN和WM_KETUP信息,这两个信息包含了一些附加参数wParam和lParam,而我们在处理消息时要先把这些信息转化为WM_CHAR信息,而TranslateMessage()函数的作用就是如此。经过TranslateMessage()处理的信息会产生新的信息,返回到消息队列去。
4.经过预处理的信息会通过DispathMessage()送到操作系统,最后操作系统把信息送到对应的窗体函数去。