调用 THROW_LAST 宏以把处理过程一下一个外部异常框架,如 果 exception-class 是类 CExceptioon,那么会获取所有异常类型。 用户可以使用 CObject::IsKindOf 成员函数以确定那个特 别异常被排除。一种获取异常的最好方式是使用顺序的 AND_CATCH 语句,每个带一个不同的异常类型。此异常类型 的指针由宏定义,用户不必定义。 【注释】 : 此 CATCH 块被定义作一个 C++范围(由花括号描述) 。如用户在此范围定义变量,那么它们只在吃范围内可以访问。 他还可以用于异常对象的指针名。 DEBUG_NEW / #define new DEBUG_NEW 【说明】 : 帮助查找内存错误。用户在程序中使用 DEBUG_NEW,用户通常使用 new 运算符来从堆上分配。在 Debug 模式下(但 定 义 了 一 个 DEBUG 符 号 ) DEBUG_NEW 为 它 分 配 的 每 个 对 象 记 录 文 件 名 和 行 号 。 然 后 , 在 用 户 使 用 , CMemoryState::DumpAllObjectSince 成员函数时,每个以 DEBUG_NEW 分配的对象分配的地方显示出文件名和行号。
为了使用 DEBUG_NEW,应在用户的资源文件中插入以下指令: #define new DEBUG_NEW 一旦用户插入本指令,预 处理
程序将在使用 new 的地方插入 DEBUG_NEW,而 MFC 作其余的
工作。但用户编译自己的程序的一个发行版时, DEBUG_NEW 便进行简单的 new 操作,而且不产生文件名和行号消息。 DECLARE_DYNAMIC / DECLARE_DYNAMIC(class_name) 【说明】 : 但从 CObject 派生一个类时,此宏增加关于一个对象类的访问运行时间功能。把 DECLARE_DYNAMIC 宏加入类的头 文件中,然后在全部需要访问词类对象的.CPP 文件中都包含此模块。如果像所描述那样使用 DELCARE_DYNAMIC 和 IMPLEMENT_DYNAMIC 宏,那么用户便可使用 RUNTIME_CLASS 宏和 CObject::IsKindOf 函数以在运行时间决定对 象类。如果 DECLARE_DYNAMIC 包含在类定义中,那么 IMPLEMETN_DYNAMIC 必须包含在类工具中。 DECLARE_DYNCREATE / DECLARE_DYNCREATE(class_name) 【说明】 : 使用 DECLARE_DYNCRETE 宏以便允许 CObject 派生类的对象在运行时刻自动建立。 主机使用此功能自动建立新对象, 例如,但它在串行化过
程中从磁盘读一个对象时,文件及视图和框架窗应该支持动态建立,因为框架需要自动建立它。 把 DECLARE_DYNCREATE 宏加入类的.H 文件中,然后在全部需要访问此类对象的.CPP 文件中包含这一模式。如果 DECLARE_DYNCREATE 包含在类定义中,那么 IMPLEMENT_DYNCREATE 必须包含在类工具中。 DECLARE_MESSAGE_MAP / DECLARE_MESSAGE_MAP() 【说明】 : 用 户 程 序 中 的 每 个 CCmdTarget