深入浅出MFC-侯俊杰
- MFC六大特点
■ MFC 程序的初始化过程
■ RTTI(Runtime Type Information)执行时期型别信息
DECLARE_DYNAMIC
struct CRuntimeClass
{
// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
#ifdef _AFXDLL
CRuntimeClass* (PASCAL* m_pfnGetBaseClass)();
#else
CRuntimeClass* m_pBaseClass;
#endif// Operations
CObject* CreateObject();
BOOL IsDerivedFrom(const CRuntimeClass* pBaseClass) const;// dynamic name lookup and creation
static CRuntimeClass* PASCAL FromName(LPCSTR lpszClassName);
static CRuntimeClass* PASCAL FromName(LPCWSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCSTR lpszClassName);
static CObject* PASCAL CreateObject(LPCWSTR lpszClassName);// Implementation
void Store(CArchive& ar) const;
static CRuntimeClass* PASCAL Load(CArchive& ar, UINT* pwSchemaNum);// CRuntimeClass objects linked together in simple list
CRuntimeClass* m_pNextClass; // linked list of registered classes
const AFX_CLASSINIT* m_pClassInit;
};
■ Dynamic Creation 动态生成
DECLARE_DYNCREATE
■ Persistence 永续留存
■ Message Mapping 消息映射
消息映射表作法,把消息和其处理例程关联起来,将消息与表格中的元素比对,然后
调用对应的处理例程,这种动作我们也称之为消息映射(Message Mapping)。
注意:CWinThread 并不属于消息流动网的一份,父类消息映射表填CCmdTarget
■ Message Routing 消息绕行
3. MFC的生死因果
注意:应用程序一定要改写虚拟函数InitInstance,因为它在CWinApp 中只是个空函数,
没有任何内建(预设)动作 ;
CFrameWnd::Create 在产生窗口之前,会先引发窗口类别的注册动作
请注意,如果类别的成员函数是一个callback 函数, 你必须声明它为"static",才能把
C++ 编译器加诸于函数的一个隐藏参数this 去掉(请看方块批注)。
Application framework classes
这一部份最为人认知的便是Document/View,这也是使MFC 跻身application framework 的关键。Document/View 的观念是希望把资料的本体,和资料的显像分开处理。由于文 件产生之际,必须动态生成Document/View/Frame 三种对象,所以又必须有所谓的 Document Template 管理之。
■ CDocTemplate、CSingleDocTemplate、CMultiDocTemplate - Document Template 扮演 黏胶的角色,把Document 和View 和其Frame(外框窗口)胶黏在一块儿。
■ CSingleDocTemplate 一次只支持一种文件类型,CMultiDocTemplate 可同时支持多 种文件类型。注意,这和MDI 程序或SDI 程序无关,换句话说,MDI 程序 也可以使用CSingleDocTemplate,SDI 程序也可以使用CMultiDocTemplate。
深入浅出MFC-侯俊杰相关推荐
- 读侯俊杰的《深入浅出MFC》小记
1.程序必须在产生窗口之前先利用API函数RegisterClass设定属性(我们称此操作为注册窗口类) 2.消息循环中的TranslateMessage是为了将键盘消息转化,DispatchMess ...
- 侯杰深入浅出MFC中CPP学习
@font-face{ font-family:"Times New Roman"; } @font-face{ font-family:"宋体"; } @fo ...
- 《深入浅出MFC》观后有感
<深入浅出MFC>观后有感 本文原创,如需转载,请注明出处! 好几年前我曾经买过这本书,知道它是本好书,在匆匆走马观看一遍后,便将它束之高阁,后来有友人借之,不想几经辗转,最终不知我的这本 ...
- 路漫漫其修远兮,吾将上下而求索——《深入浅出MFC》读后感
终于读完侯俊杰的经典著作<深入浅出MFC>,虽然不甚了了,但终于可以庆幸自己已经窥得MFC巍峨宫殿的轮廓了. 这本被很多人奉为MFC"Bible"的著作,其实早在199 ...
- 《深入浅出MFC 》(第二版)简体中文版再次印刷5000册,欲购从速 (转)
<深入浅出MFC >(第二版)简体中文版再次印刷5000册,欲购从速 (转)[@more@] 亲爱的读者朋友:您好 在您的热情鼓励和支持下,侯俊杰(侯捷)先生的<深入浅出MFC &g ...
- 不要看《深入浅出MFC》!
开篇先声明一点,<深入浅出MFC>是一本不错的书,对于MFC原码的剖析,十分到位,特别是前面对于MFC六大关键技术的总结和演示程序,尤其精彩.那为什么我要说不要看这本书呢? 我是站 ...
- 玩转MFC文档视图架构编程1——深入浅出MFC文档/视图架构之基本概念深入浅出MFC文档/视图架构之文档
原创地址: 深入浅出MFC文档/视图架构之基本概念 http://iis.xrtvu.com/Tech/ShowArticle.asp?ArticleID=276 深入浅出MFC文档/视图架构之文档模 ...
- 重提“不要看《深入浅出mfc》!”一文
上次写了"不要看<深入浅出MFC>!"一文后,没想到会引起这么大的反响,看了大家的评论后,我觉得有些朋友误解了我的意思,我有必要在这里重新说一下. 首先就是为什么起这个 ...
- 在 console mode 中使用 C/C++ 编译器 (作者:侯俊杰)
在 console mode 中使用 C/C++ 编译器 侯捷 1999.04.08 侯捷 1999.04.08 我总是鼓励 C/C++ 的学习者,在刚接触这个程式语言的时候,先以 console m ...
- 21、深入浅出MFC学习笔记,Application Framework简介
1.Application Framework是一个完整的程序模型:是一组合作无间的对象,彼此藉消息的流动而沟通,并且互相调用对方的函数以求完成任务.<?xml:namespace prefix ...
最新文章
- MySQL-数据库三大范式
- 机器人抓矸石_基于机器视觉的多机械臂煤矸石分拣机器人系统研究
- as3.0 比较两个数组
- 字节跳动攻城狮: 我整理了很久的Python面试指南,请查收!
- 30道MySQL基础面试题
- 基于 WebGL 的 HTML5 3D 工控隧道可视化系统
- 110个oracle常用函数总结(7),oracle110个最常用函数
- 关于https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/的部分内容
- python创建一个字典、其中值为1_从2个列表创建一个字典,其中一个作为键,另一个作为python中的值...
- python使用list方法,将迭代器转换为列表后,再次循环打印迭代器输出为空
- Excel计算1-12月的销售累计额
- 从基本组件到结构创新,67页论文解读深度卷积神经网络架构
- HTML5、css3、js实现3D相册
- php-resque消息队列
- Excel VBA: 自动生成巡检报表并通过邮件定时发送
- 牛客网第二场I--car(简单图论)
- Give up sending metadata request since no node is available
- 2022-2027年(新版)中国LCP行业发展前景及需求规模预测报告
- Pytorch混合精度训练
- 衡山 22/11/27 vue4