第六章 MFC 程序的生死因果
1 .不同类的 PreCreateWindow ()成员函数都是在窗口产生之前一刻被调用,准备用来注册窗口类。如果我们指定的窗口类是 NULL ,那么就使用系统默认类。
第九章 消息映射与命令传递
1.  各种消息之中,来自菜单或工具栏者,都以 WM_COMMAND 表示,所以这一类消息我们又称之为命令消息( Command Message ),其中 wParam 记录着此一消息来自哪一个菜单项目。
2.  除了命令消息,还有一种消息也比较特殊,出现在对话框函数中,是控件( controls )传送给父窗口(即对话框)的消息,虽然他们也是以 WM_COMMAND 为外衣,但特别归类为“ notification 消息”。
3.  MFC 的消息分为三大类:
命令消息-标准消息- Controls Notification
4.  一个类最多有一个消息映射表格。
第十四章 MFC 多线程程序设计
1.  CreateThread 可以产生一个线程,而线程的本体就是 CreateThread 3 个参数所指定的一个函数(一般我们称之为“线程函数”),这个函数与当前的“执行事实”同时并行,成为另一个“执行事实”,线程的执行期,也就是该线程的生命期。
2.  一段可执行的程序(包括 EXE Dll ),其程序代码,数据,资源被加载到内存中,由系统建置一个数据结构来管理他,就是一个模块。这里的数据结构,名为 Module Database MDB ),其实就是 PE 格式的 PE 表头,可以从 WINNT.H 文件中找到一个 IMAGE_NT_HERDER 结构。
3.  线程拥有消息队列,如果某个线程调用:: GetMessage ()而其消息队列却是空的,这个线程便被冻结,直到再有消息进来为止。冻结的意思是不管你的优先级有多高,暂时退出排班行列。线程也可能被以 ::SuspendThread 强制冻结(:: ResumeThread 可以解除冻结)。
4.  以:: CreateThread 产生一个线程,并指定一个线程函数,他就是一个 Worker thread ,除非在它的生命中接触到了输入消息―――这时他应该有一个消息循环,以抓取消息,于是变为 UI Thread 。线程本来就有一个消息队列,如果线程程序代码中带有一个消息循环,就称为 UI Thread
5.  为了协调各个线程的执行次序,让某个线程等待某个线程, Windows 系统提供了四种同步化机制:
Critical Section ―――― CCriticalSection
Semappore ―――――― CSemaphore
Event ―――――――― CEvent
Mutex ―――――――― CMutex