1、什么是消息?
当我们点击鼠标的时候,或者当我们按下键盘的时候,操作系统都要把这些动作记录下来,存储到一个结构体中,这个结构体就是消息。
2、消息队列:每个线程只有一个消息队列
当我们用鼠标点击某个窗口右上角的X号的时候,具体的步骤如下
1、发送一个消息,将消息放入到系统消息队列里面
2、系统根据这个消息找到对应的窗口对象 (怎么找的,见下面问题1)
3、根据窗口对象里面的成员线程,找到这个窗口所属的线程
4、将消息放入到线程的消息队列里面
5、该线程的消息循环接收到这个消息,关闭应用程序
3、窗口和线程
问题1: 系统是怎么根据位置来找到窗口对象的呢???
根据位置等信息遍历所的窗口对象,找到该消息所属的窗口(消息是针对于窗口的)
问题2: 所以点击一个窗口的时候,消息是怎么从系统消息队列放入到线程消息队列里面的呢?
位置---->窗口对象------>线程内核对象------>消息队列
最后要注意:
一个线程可以有多个窗口,但是一个窗口只能属于一个线程