MFC
消息机制
(1)窗口消息。以“WM_”开头,WM_COMMAND除外,消息通常从系统发送到窗口,或从窗口发送到系统。窗口消息一般和窗口内部运作有关。
(2)命令消息。和处理用户请求有关。
(3)控件消息。
MFC的消息映射机制
主要通过两个宏来实现的:
DECLARE_MESSAGE_MAP()宏
BEGIN_MESSAGE_MAP(theClass,baseClass)和END_MESSAGE_MAP()宏
MFC代码分析
MFC中的WinMain()函数中,首先调用CWinApp::InitApplication(),再调用CWinThread::InitInstance()。之后再调用CWinTread::Run()函数。
MFC中消息不是通过GetMessage()从线程消息队列中获得的,而是通过PeekMessage()获得。
GetMessage():具有同步行为的函数,如果消息队列中没有消息,GetMessage()会一直阻塞,使得县城处于睡眠状态,直到消息队列中有一条或多条消息,操作系统才会唤醒该线程,GetMessage()才会返回。
PeekMessage():具有异步行为的函数,如果消息队列中没有消息,他马上返回0,不会导致线程处于睡眠状态。