第六章
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
转载于:https://blog.51cto.com/orajc/99299