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,調用時直接按"類::變量"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章