MFC的消息机制(也是Windows的消息机制):
1. 【说明】这里不细细的分析,这些知识点是大量的资料及书上撷取下来的。
2. 【MFC消息机制的起止】
=> UI产生消息 (比鼠标点一下UI即窗口,在Windows上一可执行文件一般通俗看成一个窗口,说法不严谨) 。
=> 相应的驱动程序先得到信号(如果你鼠标点击,鼠标的驱动程序先得到信号,如果你键盘,则亦然)。
=> 相应的驱动程序得到信号则会通知操作系统(驱动是内核 ->内核通知系统层) ——―“嗨,系统兄dei,鼠标左键被单击了!”
=> 操作系统得到这一信号后,马上要判断 :用 户单击鼠标左键,这是针对哪个窗口呢(如果是你开发的MFC应用UI,它在
Windows看来就是一个窗口)?如何判断?这很简单!当前状态中,具有焦点的窗口[或控件]就是了[这里当然是“开
始”BUTTON了]。然后操作系统马上向这个窗口发送一条消息到这个窗口所在进程的消息队列,消息内容应是消息本身
的代号、附加参数、窗口句柄…等等了。(注意进程是线程的资源环境,它是不活跃的,任何程序真正“干活”是线程。
这个如果不理解,真不是一两句能说清的,查资料看书吧,如果理解了觉得那是理所当然的,说前面这话那是多此一举。)
=> 每一个线程都有一个消息队列(上面的消息放在对应的线程的消息队列了) -> GetMessage从消息队列中获取消息
-> TranslateMessage翻译/转换消息 >DispatchMessage -> 窗口处理函数(即产生鼠标点下的意图结果);
3. Windows是以事件即消息驱动为核心的,理清消息的机制脉胳,对于Windows环境的开发程序或者遇到问题分析问题,
可以从本 质上去分析Windows消息的起落。
4.【ps】是总结笔记,也在探索实现。亦是抛砖引玉,或可为有需要的人一点灯火。