态度 决定一切,切记,勿在浮砂筑高台!
1 以消息为基础的事件驱动 是MFC的灵魂!(消息的产生,获得,分派,判断,处理,已经消息的类型等);
2 文件编译过程图:
3 MFC 消息产生,监听,处理图:
备注: 消息的产生:硬件装置产生的消息会被USER模块掌管的各个外围的驱动程序监听到,并且放到SYSEM QUEUE系统队列里面,
windows系统或者是windows应用程序发生的消息会被放到Application queue 应用程序消息队列中。
消息的获得: 以应用程序的角度来看,他并不关心消息是放到哪里,只需要通过GetMessage 这个API函数就能获得消息;
消息分发: DispatchMessage() 将消息分发出去,一般在分发之前会调 TranslateMessage() 将一些消息转换成键盘消息,发送到窗口函数中;
消息的处理: 窗口函数,也就是窗口的回调函数!
说明: 1 当程序执行到CreateWindow()这个API函数时,他会产生一个WM_CREATE这个消息,并且将这个消息发送到Appletion Queue消息队列中;
2 GetMessage()从消息对列中取得WM_CREATE这个消息;
3 通过DispathcMessage()利用USER Module 这个模块将消息分发给窗口函数,即WndProc这个回调函数,进行窗口的创建;
4 创建完窗口后进行显示;
5 当关闭窗口时,会发送WM_CLOSE这个命令,该命令会触发DestroyWindow()这个函数如5;
6 当触发DestroyWindow这个函数后,他会触发WM_DESTROY这个命令,并且会触发PostQuitMessage()这个函数,如6
7 当触发PostQuitMessage()这个函数后,会触发WM_QUIT这个命令,当GetMessage()捕获WM_QUIT后会退出While循环,从而结束!
4 消息空闲时处理:OnIdle
捕获消息要用PeekMessage而不能用GetMessage,注意2者的区别!