1:pg17图1-2windows程序的本体与操作系统间的关系
2:_stdcall,_pascal,_cdecl,参数进入堆栈的次序。处理堆栈的责任归属
3:PG27":对话框函数。通过只处理wm_initdialog和wm_command两个消息。对话框的各个控件也都是小小窗口,各有自己的窗口函数。它们以消息与其管理者(父窗口)沟通。而所有的控件传来的消息都是wm_command,再由其参数分辨哪一种控件以及哪一种通知消息。Model对话框的激活结束,靠的是DialogBox和EndDialog两个api函数。
DialogBox(_hInst,
"AboutBox",//对话框模板名称
hWnd,//父窗口
(Dkgproc)About)//对话框函数名称
4:PS28:模块定义文件(.Def),windows程序需要一个模块定义文件。将模块名称,程序段和数据段的内存特性,模块堆大小。堆栈大小,所有的callback函数名称等等登记下来。
5:PG29:windows程序的生与死:
程序的死wm_close___DefWindowPrco___DestroyWindow把窗口清除
发出Wm_Destroy___PostQuitMessage___Wm_QUit___Getmessage取得___结束消息循环。
6:PG37:在mfc console程序中一定要指定多线程版的 C runtime函数库。所以必须使用/MT选项
7:PG39:一个进程的诞生和死亡。
进程和兴对象。计数值为1——分配4GB的地址空间——加载器加载上述地址空间——建立主线程线程才是cpu时间的分配对象——调用startup code——starup code调用App的WinMain()函数——APP程序运行——关闭APP主窗口使winMain中的消息循环结束winmain结束——回到startup code——回到StartUp code——回到系统,系统调用ExitProcess结束进程。
8:PG41:一个线程的诞生与死亡
配置线程对象,其handle将成为createthread的返回值。——设定计数值为1——配置线程的上下文——保留线程的堆栈——设定指针缓存器和指令指针缓存器
9:PG43:为了保证多线程情况下的安全,C运行库必须为每一个线程做一些登记工作。没有这些记录,C运行库就不知道为每个线程配置一块新的内存,作为线程的区域变量用。因此。CreateThread有一个名为_beginthreadex的外包函数。负责额外的登记工作。<process.h>