准备:
模块状态:Module State, MFC对应类型AFX_MODULE_STATE
线程状态:Thread State, MFC对应类型AFX_THREAD_STATE
模块线程状态:Module Thread State, MFC对应类型AFX_MODULE_THREAD_STATE
模块概念:
MFC Regular DLL -> Module
MFC EXE -> Module
MFC Extension DLL -> None (所属的Module为CDynamicLibrary所挂载的Module,可以是Regular Dll或MFC EXE)
一个Module State含有多个Thread State。每个Thread State以TLS(Thread Local Storage)的方式存储
MFC对象如CWnd, CGdiObject等绑定到了一个特定Module下的特定Thread.
因此不同Module或不同Thread的情况下,MFC对象不能互访.
Tooltip注意1:
CWnd::EnableTooltip方法依赖于Thread State存储的内部的CTooltipCtrl控件来实现。MFC在内部实现时,首先从消息队列取出消息,再调用AfxPreTranslateMessage函数,AfxPreTranslateMessage最后会把该消息传递给从子控件到父控件的所有CWnd类的PreTranslateMessage方法中。在这个树级调用的过程中,是直接从当前Thread State中来查找的CWnd对象。在这种情况下&#