Create是CFrameWnd的成员函数,在Create函数中又调用了CreateEx,因为派生类CFrameWnd没有改变CWind的虚函数CreateEx,所以其实调用的是CWnd::CreateEx. 然后我们看CreateEx源码会发现调用了PreCreateWindow();这是个虚函数,在CWnd和CFrameWnd都有定义,由于this指针的缘故,这里调用的是CFrameWnd::PreCreateWindow。 继续跟入可...
分析MFC程序的主线程启动及消息队列处理的过程将有助于我们进一步理解UI线程与消息队列的关系,为此我们需要简单地叙述一下MFC程序的"生死因果"(侯捷:《深入浅出MFC》)。 使用VC++ 6.0的向导完成一个最简单的单文档架构MFC应用程序MFCThread: (1) 输入MFC EXE工程名MFCThread; (2) 选择单文档架构,不支持Document/...
深入浅出MFC源代码part2.pdf,《深入浅出MFC》 2/e 电子书开放自由下载 声明 致亲爱的大陆读者 我是侯捷(侯俊杰)。自从华中理工大学于1998/04 出版了我的《深入浅出MFC》 1/e 简体版(易名 《深入浅出Windows MFC 程序设计》)之后,陆陆续续我 收到了许多许多的大陆读者来
如果用 正体表示类名和函 数名 (形式为ClassName::FunctionName ),则程序源码中没有类名约束,分几种情况:如 果是虚拟函数则表示该函数动态约束的结果是调用了指定类的函数;如果是消息处理函数, 表示指定类的消息处理函数被调用;如果不是上述两种情况,表示该函数调用了指定类的实 现。如果用斜体表示表示类名和...
如果用正体表示类名和函 数名 (形式为ClassName::FunctionName ),则程序源码中没有类名约束,分几种情况:如 果是虚拟函数则表示该函数动态约束的结果是调用了指定类的函数;如果是消息处理函数, 表示指定类的消息处理函数被调用;如果不是上述两种情况,表示该函数调用了指定类的实 现。如果用斜体表示表示类名和函数...
这是mfc 源码(vc 6.0中,mfc版本未查)struct AFX_CLASSINIT{ AFX_CLASSINIT(CRuntimeClass* pNewClass) { AfxClassInit(pNewClass); } };void AFXAPI AfxClassInit(CRuntimeClass* pNewClass){AFX_MODULE_STATE* pModuleState = AfxGetModuleState();AfxLockGlobals(CRIT_RUNTIMECLASSLIST);...
开篇先声明一点,《深入浅出MFC》是一本不错的书,对于MFC原码的剖析,十分到位,特别是前面对于MFC六大关键技术的总结和演示程序,尤其精彩。那为什么我要说不要看这本书呢? 我是站在一个初学者的角度来说这句话的,也是我当初看了这本书的一些感受(因为过于难以理解,差了几章没有看,后来再补的),这本书对于MFC...
真正到了你要用的时候,你不可能只用李久进的书中的东西就行了。你实际碰到的问题不会那么单纯,不会容易到你看看某个函数的流程图表就可以的程度。你还是需要自己动手,自己学MFC的实现,自己写代码——而这些东西,正是侯捷的书中可以教给你的。你是希望要一桶鱼,还是希望学习钓鱼的方法——要一...
是《深入浅出MFC》侯俊杰,书中的源码。配合这本学习事半功倍。我也上传了非扫描版的pdf书。 MFC Code2013-09-11 上传大小:10.00MB 所需:10积分/C币 侯俊杰版深入浅出mfc源代码 侯俊杰版的深入浅出mfc所配套的源代码,有电子版mfc的同学可以下载回去。
MFC 使用ClassWizard帮助实现消息映射,它在源码中添加一些消息映射的内容,并声明和实现消息处理函数。现在来分析这些被添加的内容。 在类的定义(头文件)里,它增加了消息处理函数声明,并添加一行声明消息映射的宏 DECLARE_MESSAGE_MAP。 在类的实现(实现文件)里,实现消息处理函数,并使用 IMPLEMENT_MESSAGE_MAP宏实现消息...