MFC第一天——基类1

1  什么叫类可串行化?
  :从CObject派生,实现Serialize函数,使用了DECLARE_SERIAL宏和IMPLEMENT_SERIAL宏,有缺省构造函数
  :对象通过写出描述自己状态的数值来记录自己,叫对象的串行化。把对象保存在存储器上,用到时可恢复原来的状态,使对象可按流的方式读写


2 神秘的基类CObject类 
   实现了:对运行时类型识别的支持,对动态创建的支持,对对象保存和可串行化的支持,对错误诊断的支持
  AssertValid()产生断言,发出消息,列出断言失败的行数和文件名并终止程序,
  dump(),将诊断内容转存到CDumpContext中
  IsSerializable()测试对象是否可串行化, 
  Serialize()从档案文件中装载或向档案文件中存储某对象, 
  CRuntimeClass结构: 类名,对象字节长度,…
  RUNTIME_CLASS(class_name), 获得一个运行类结构,返回一个CRuntimeClass结构指针
  GetRuntimeClass(),返回该对象类的CRuntimeClass结构指针
  IsKindOf()判断对象是否属于该类


3 CCmdtarget又实现了什么?
   --->封装了MFC的消息映射机制OnCmdMsg,封装了显示沙漏标的功能BeginWaitCursor,封装COM的IDispatch接口GetIDispatch。


4 举例MDI程序CMyDoc
   void CMyDoc::Serialize(CArchive& ar)  //确定归档文件是否被存储
   {  
      if( ar.IsStoring())     {add storing code here}
      else    { add loading code here }
   } 
   #ifdef _DEBUG
   void CMyDoc::AssertValid() const
   {
      CDocument::AssertValid();
   }
   void CMyDoc::Dump( CDumpContext& dc) const
   {
      CDocument::Dump(dc);
   }
   #endif 


5 由global想到的如何在MFC中使用全局变量
  a、头文件中extern声明,实现文件中定义
  b、在MyApp类中定义,其他类可通过获取MyApp类的指针来调用,
  c、声明通用类,将其变量和函数声明为static,调用时直接按"类::变量"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值