Visual C++ MFC 中常用宏的含義

發表于:2007-04-27來源:作者:點擊數: 標簽:CATCHC++and含義MFC
AND_CATCHAND_CATCH AND_CATCH(exception_class,exception _object_point_name) 說明: 定義一個代碼塊,它用于獲取廢除當前TRY塊中的附加異常類型。使用CATCH宏以獲得一個異常類型,然后使用AND_CATCH宏獲得隨后的異常處理代碼可以訪問異常對象(若合適的話
  AND_CATCHAND_CATCH

  AND_CATCH(exception_class,exception _object_point_name)

  說明:

  定義一個代碼塊,它用于獲取廢除當前TRY塊中的附加異常類型。使用CATCH宏以獲得一個異常類型,然后使用AND_CATCH宏獲得隨后的異常處理代碼可以訪問異常對象(若合適的話)已得到關于異常的特別原因的更多消息。在AND_CATCH塊中調用THROW_LAST宏以便把處理過程移到下個外部異??蚣?。AND_CATCH可標記CATCH或AND_CATCH塊的末尾。

  注釋:

  AND_CATCH塊被定義成為一個C++作用域(由花括號來描述)。若用戶在此作用域定義變量,那么記住他們只在此作用域中可以訪問。他也用于exception_object_pointer_name變量。

  ASSERT

  ASSERT(booleanExpression)

  說明:

  計算變量的值。如果結構的值為0,那么此宏便打印一個診斷消息并且成訊運行失敗。如果條件為非0,那么什么也不做。 診斷消息的形式為: assertion failed in file in line 其中name是元文件名,num是源文件中運行失敗的中斷號。 在Release版中,ASSERT不計算表達式的值也就不中斷程序。如果必須計算此表達式的值且不管環境如何那么用VERIFY代替ASSERT。

  注釋:

  ASSERT只能在Debug版中用

  ASSERT_VAILD

  ASSERT_VAILD(pObject)

  說明:

  用于檢測關于對象的內部狀態的有效性。ASSERT_VALID調用此對象的AssertValid成員函數(把它們作為自己的變量來傳遞)。在Release版中ASSERT_VALID什么也不做。在DEBUG版中,他檢查指針,以不同于NULL的方式進行檢查,并調用對象自己的AssertValid成員函數。如果這些檢測中有任何一個失敗的話,那么他會以與ASSERT相同的方法顯示一個警告的消息。

  注釋:

  此函數只在DEBUG版中有效。

  BEGIN_MESSAGE_MAP

  BEGIN_MESSAGE_MAP(the class,baseclass)

  說明:

  使用BEGIN_MESSAGE_MAP開始用戶消息映射的定義。在定義用戶類函數的工具(.cpp)文件中,以BEGIN_MESSAGE_MAP宏開始消息映射,然后為每個消息處理函數增加宏項,接著以END_MESSAGE_MAP宏完成消息映射。

  CATCH

  CATCH(exception_class,exception_object_pointer_name)

  說明:

  使用此用定義一個代碼塊,此代碼用來獲取當前TRY塊中都一個異常類型。異常處理代碼可以訪問異常對象,如何合適的話,就會得到關于異常的特殊原因的更多消息。調用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派生類必須提供消息映射以處理消息。在類定義的末尾使用DECLARE_MESSAGE_MAP宏。接著,在定義類成員函數的.CPP文件中,使用BEGIN_MESSAGE_MAP宏,每個用戶消息處理函數的宏項下面的列表以及END_MESSAGE_MAP宏。

  注釋:

  如果在DECLARE_MESSAGE_MAP之后定義任何一個成員,那么必須為他們指定一個新存取類型(公共的,私有的,保護的)。

  DECLARE_SERIAL

  DECLARE_SERIAL(class_name)

  說明:

  DECLARE_SERIAL為一個可以串行化的CObject派生類產生必要的C++標題代碼。串行化是把某個對象的內容從一個文件讀出和寫入一文件。在.H文件中使用DECLARE_SERIAL宏,接著在需要訪問此類對象的全部.CPP文件中包含此文件。如果DECLARE_SERIAL包含在類定義中,那么IMPLEMENT_SERIAL必須包含在類工具中。DECLARE_SERIAL宏包含全部DECLARE_DYNAMIC,IMPLEMENT_DYCREATE的功能。

共2頁。 1 2 8 :

原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...
国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97