MFC常用宏的分类及其作用与用法

来自:http://web.tsmc.edu.cn/xxkx/it/2/jss_2_c_00009.html

1.MFC宏概述以及常用宏及作用

   MFC宏是MFC类库的一个重要组成部分。在MFC应用程序中经常出现。根据用途,大致辞可分为消息映射宏,运行时类型识别宏,调试宏和异常处理宏等。
   MFC中常用宏及其作用如下:
   名称 功能
   RUNTIME_CLASS 获得运行时类的CRuntimeClass结构指针 RUNTIME_CLASS( class_name )
   DECLARE_DYNAMIC 提供基本的运行时类型识别(声明) DECLARE_DYNAMIC( class_name )
   IMPLEMENT_DYNAMIC 提供基本的运行时类型识别(实现) IMPLEMENT_DYNAMIC (class_name, base_class_name )
   DECLARE_DYNCREATE 动态创建(声明) DECLARE_DYNCREATE( class_name )
   IMPLEMENT_DYNCREATE 动态创建(实现) IMPLEMENT_DYNCREATE( class_name,base_class_name )
   DECLARE_SERIAL 对象序列化(声明) DECLARE_SERIAL( class_name )
   IMPLEMENT_SERIAL 对象序列化(实现)IMPLEMENT_SERIAL(class_name,base_class_name,wSchema)
   DECLARE_MESSAGE_MAP 声明消息映射表 DECLARE_MESSAGE_MAP()
   BEGIN_MESSAGE_MAP 开始建立消息映射表 BEGIN_MESSAGE_MAP( theClass, baseClass )
   END_MESSAGE_MAP 结构建立消息映射表 END_MESSAGE_MAP()
   ON_COMMAND 命令消息映射宏
   ON_MESSAGE 自定义消息映射宏
   ON_WM_... MFC预定义消息映射宏
   ON_BN_...,ON_EN_...等 控件通知消息映射宏
   2.部分宏说明:
   a.RUNTIME_CLASS宏使程序能实时创建类的实例。为了让这个宏起作用,定义的类必须从CObject类派生而来,并且在派生类的定义中必须使用宏DECLARE_DYNAMIC,DECLARE_DYNCREATE或DECLARE_SERIAL,在派生类的实现文件中必须使用宏IMPLEMENT_DYNAMIC,IMPLEMENT_DYNCREATE或IMPLEMENT_SERIAL。
   b.DECLARE_DYNAMIC只能使CObject派生类对象具有基本的类型识别功能,可以通过CObject::IsKindOf(ClassName)测试对象与给定类ClassName的关系。
   c.DECLARE_DYNCREATE包括了DECLARE_DYNAMIC的功能。DECLARE_SERIAL包括了DECLARE_DYNAMIC和 DECLARE_DYNCREATE的功能。
   3.MFC调试宏
   a.跟踪宏:TRACE(<表达式>)
   b.断言宏:ASSERT(<表达式>)
   当ASSERT宏的参数不为真时,暂停程序的执行。Examda提示:如果表达式的值为真,则不做任何事情。如果参数为假时,则暂停程序的执行并弹出一个对话框,告诉用户程序暂停运行的行以及所在文件信息。用户可以根据情况选择终止程序运行,调试程序或继续运行。
   c.断言有效宏 ASSERT_VALID ASSERT_VALID(<指针>)
   该宏用于检查指针和对象的用效性。对于一般指针,只检查指针是否为空。对于MFC对象指针,Examda提示:还调用CObject::AssertValid()成员含数判断对象是否合法。
   ASSERT_VALID与ASSERT类似,也是使用对话框提示用户指针或对象是无效的。如果对象有效,则不做任何事情.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值