1、组件是对数据和方法的简单封装。<?xml:namespace prefix = o />
2、Tip of the day.
3、ActiveX control 的三个接口也有类似性质:
■ property:相当于C++ 类别的成员变量
■ method:相当于C++ 类别的成员函数
■ event:相当于Windows 控制组件发出的notification 消息
1)一般而言properties 可分为四种类型:
■ Ambient properties
■ Extended properties
■ Stock properties
■ Custom properties
2)一般而言events 可分为两种类型:
■ Stock events
■ Custom events
4、类别型录网:所有类别相关信息(包括类别名称及建构函式)组成的类别型录网络(一个链表),然后把类别名称的比对动作埋藏在 Serialize 虚拟函数中。
类别型录网络中的每一个成员就是 CRuntimeClass 对象,网络的组成则是藉由类别宣告时的DECLARE_DYNCREATE 和 IMPLEMENT_DYNCREATE 宏完成。RUNTIME_CLASS 宏就是取出「类别型录网络」中的一个元素(代表一个类别)。
所以,当你的程序一开始执行,整个 MFC 的绝大部份类别,都已经放在这个「类别型录网络」之中。有了这网络,RTTI(执行时期型别辨识)和 Dynamic Creation 都不是问题。
5、persistence,(MFC 称之为 serialization)。
注:我发现台湾人称链表为串列,函数为函式,宏为巨集,还有的把对象称为物件,dump(转储)为倾印,把进程称为行程,把程序称为程式。
6、在MFC中,所有的诊断指令或宏(包括TRACE)事实上都流经一个名为afxDump的对象之中, 那是一个 CDumpContext 对象。所有的诊断动作都进入
CDumpContext::OutputString 成员函数,然后才进入全域函数 AfxOutputDebugString,把字符串送往除错器。
7、如何使用TRACEWIN.h[4]
跟踪调试的小程序,由Paul DiLascia设计。
1)把CMfxTrace类别含入到自己的程序中,像这样:
#include "tracewin.h"
并在程序的任何地方(通常是 InitInstance 函式内)做此动作:
CMfxTrace::Init();
2)然后所有的TRACE字符串输出就会流到Tracewin视窗上。
注意,TRACEWIN.H中不但有类别宣告,还有类别定义,和一般的表头档不太一样,所以只能够在你的程序中含入一次TRACEWIN.H。
另一款调试工具是LODPRF32。
参考
[1] 深入浅出MFC
[2] Visual C++ Sample Applications
http://msdn.microsoft.com/en-us/library/1370z17c%28VS.80%29.aspx
[3] Visual C++ Samples and Related Documentation for Visual Studio 2010
http://archive.msdn.microsoft.com/vcsamples
[4] MFC/.NET Trace diagnostics window by Paul DiLascia