Visual C ++ MFC一般的に使用されるマクロの意味(転載)

   AND_CATCHAND_CATCH

  AND_CATCH(exception_class、例外_object_point_name)

  説明:

   例外の追加のタイプを取得するために使用されるコードのブロックを定義し、現在のブロックに廃止してみてください。次いで、マクロCATCH例外の種類を取得する例外オブジェクトを(適切な場合)にアクセスすることができ、その後のマクロAND_CATCH例外処理コードを取得するために使用することは、異常の特定の原因の詳細をされています。次のプロセス異常な外部のフレームに移動するようにAND_CATCH THROW_LASTマクロブロックを呼び出します。AND_CATCHは、標識またはAND_CATCHキャッチ端ブロックすることができます。

  注:

  AND_CATCHブロックは(括弧内に記載)C ++範囲として定義されます。
このユーザーの場合は スコープ定義された変数は、彼らが唯一のこのスコープにアクセスすることができることを覚えておいてください。彼はまた、使用 exception_object_pointer_name変数を。

  ASSERT

  ASSERT(BooleanExpression)

  説明:

   計算値変数。構造が0である場合、このマクロは、診断メッセージを印刷し、聴覚に障害が発生したであろう。条件がゼロであれば、何もしません。診断メッセージの形式は以下のとおりであるアサーションは名前がメタファイルの名前、numは割り込み番号を失敗したソースファイルである行にファイルに失敗しました。リリースバージョンでは、また、プログラムを中断されていない式の値を数えていない主張しています。あなたは、この式の値を計算し、関係なく、彼らはASSERTの代わりにVERIFY使用環境の必要がある場合。

  注:

  だけでデバッグバージョンでアサート

  ASSERT_VAILD

  ASSERT_VAILD(のPObject)

  説明:

   有効にオブジェクトの内部状態を検出します。ASSERT_VALID AssertValidは、(それらの変数としてそれらを渡すために)このオブジェクトのメンバ関数を呼び出します。ASSERT_VALIDは、リリースバージョンでは何もしません。デバッグバージョンでは、彼はNULLへのポインタをチェックして、オブジェクト自身のAssertValidのメンバ関数を呼び出すための別の方法で確認しました。これらのテストのいずれかが故障している場合は、その後、彼はASSERT同じように警告メッセージが表示されます。

  注意:

  この機能はデバッグバージョンでのみ使用可能です。

  BEGIN_MESSAGE_MAP

  BEGIN_MESSAGE_MAP(クラス、BaseClassの)

  説明:

  ユーザ定義の開始BEGIN_MESSAGE_MAPメッセージマップを使用。クラスユーザ機能ツール(.CPP)ファイルの定義では、マクロBEGIN_MESSAGE_MAPマップの開始メッセージは、マクロEND_MESSAGE_MAPマップ完了メッセージに続く各メッセージ処理機能のマクロエントリを増やします。

  CATCH

  CATCH(exception_class、exception_object_pointer_name)

  概要:

   このコードのコード・ブロックのこの定義を使用すると、現在のブロックを得るために使用されるTRY例外タイプです。例外処理コードは例外オブジェクトにアクセスすることができ、どのように適切な、異常の特定の原因に関する詳細な情報を取得します。THROW_LASTマクロ例外クラスがクラスCExceptioonであれば、あなたは例外のすべての種類を取得します、少し異常な外部のフレームワークプロセスを呼び出します。ユーザーが特定の例外が除外されているかを決定するためのCObject :: IsKindOfメンバ関数を使用することができます。最良の方法は、取得した異常AND_CATCHシーケンシャル文、異なる例外タイプと、それぞれを使用することです。マクロで定義されたこの例外ポインタ型、ユーザーが定義されていない必要があります。

  注:

  このCATCHブロックは、(括弧内に記載)C ++の範囲として定義されます。この範囲で、そのようなユーザ定義の変数として、それらは、食事の範囲内でアクセスすることができます。彼はまた、例外オブジェクトポインタの名前を使用しました。

  DEBUG_NEW

  の#define新しい新しいDEBUG_NEWの

  説明:

   メモリエラーを見つけるのに役立ちます。プログラム内のユーザーDEBUG_NEWは、ユーザーが一般的に使用し、new演算子は、ヒープから割り当てられます。(DEBUGが、シンボルを定義する)デバッグモードでは、各オブジェクトレコードDEBUG_NEWファイル名と行番号は、それに割り当てられました。そして、ユーザは、各ファイル名と行番号を示す場所のオブジェクトDEBUG_NEW割り当てに割り当てられ、CMemoryState :: DumpAllObjectSinceメンバ関数を使用します。MFCしばらく休息のために、新しいの#define DEBUG_NEWこのコマンド・プリプロセッサDEBUG_NEWは、使用の新しい場所を挿入し、ユーザを挿入すると:使用DEBUG_NEWについては、ユーザーのリソースファイルに以下の命令を挿入する必要があります。ユーザーがリリースプログラムの独自のバージョンをコンパイルするときしかし、それ簡単な新しい操作をDEBUG_NEWが、ファイル名と行番号情報を生成しません。

  DECLARE_DYNAMIC

  DECLARE_DYNAMIC(CLASS_NAME)

  説明:

   しかし、CObjectの派生クラス、実行時関数オブジェクトクラスにアクセスにこのマクロを増やします。ヘッダファイルDECLARE_DYNAMICマクロは、クラスに参加し、その後、音声のすべての部分でオブジェクトの.CPPファイルは、このモジュールが含まれているアクセスする必要があります。DELCARE_DYNAMICの使用とIMPLEMENT_DYNAMICマクロが記載されているように、場合、ユーザは、実行時にオブジェクトのタイプを決定するために、マクロのCObject :: IsKindOf RUNTIME_CLASS関数を使用することができます。DECLARE_DYNAMICは、クラス定義に含まれている場合、IMPLEMETN_DYNAMICは、クラスのツールに含まれている必要があります。

  DECLARE_DYNCREATE

  DECLARE_DYNCREATE(CLASS_NAME)

  説明:

   使用DECLARE_DYNCRETEマクロCObjectの派生クラスの実行時に自動的に作成されたオブジェクトをできるようにするためです。例えば、自動的に新しいオブジェクトのホストを作成するには、この機能を使用するが、それは、ディスクからオブジェクトを読み込むファイルやウィンドウを表示し、フレームワークが自動的にそれを作成する必要があるため、フレームは、ダイナミックの確立を支援すべきであるシリアルの過程にあります。王は、すべてがこのようなオブジェクト.CPPファイルにアクセスする必要があり、このモデルを含め、.HファイルDECLARE_DYNCREATEクラスを追加しました。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)

  説明:

   必要なC ++コードを生成するDECLARE_SERIALヘッダはシリアライズCObjectの派生クラスであることができます。シリアライズオブジェクトの内容は、ファイルからファイルへの読み書きされます。.HファイルでDECLARE_SERIAL使用マクロ、そのようなオブジェクトへのアクセスを必要とするすべての.CPPファイルにこのファイルが含まれています。DECLARE_SERIALは、クラス定義に含まれている場合、IMPLEMENT_SERIALは、クラスのツールに含まれている必要があります。DECLARE_SERIALマクロは、すべてのDECLARE_DYNAMIC、IMPLEMENT_DYCREATE機能が含まれています。

  END_CATCH

  END_CATCHの

  説明:

  最後またはAND_CATCH CATCHブロックの終わりを識別する。

  END_MESSAGE_MAP

  END_MESSAGE_MAPの

  説明:

  使用END_MESSAGE_MAPマクロマッピングエンドユーザのメッセージ定義

  IMPLEMENT_DYNAMIC

  IMPLEMENT_DYNAMIC(CLASS_NAME、base_class_name)

  説明

  動的シリアル動作によって構造のクラスのCObject派生クラス名および場所にアクセスするために必要なC ++コードを生成するために。オブジェクトコードの連結の結果に続いてIMPLEMENT_DYNAMICマクロ.CPPファイル、使用

  IMPLEMENT_DYNCREATEの

  IMPLEMENT_DYNCREATE(CLASS_NAME、base_class_name)

  説明:

   DECLARE_DYNCREATEマクロIMPLEMENT_DYNCREATEの使用マクロでCObjectの派生クラスのオブジェクトが自動的に実行時に作成されるようにします。たとえば、オブジェクトを自動的に作成するために使用して、この機能をホストが、それを被験者に行くのシリアル化プロセスでディスクから読み取られ、彼はクラスでIMPLEMENT_DYNCREATEマクロツールに参加しました。ユーザーDECLARE_DYNCREATEとIMPLEMENT_DYNCREATEマクロ場合、マクロとのCObject :: IsKindOf RUNTIME_CLASSメンバ関数を使用して、実行時にオブジェクトのクラスを決定するために行きました。DECLARE_DYNCREATEの定義に含まれている場合、その後、IMPLEMENT_DYNCREATEは、クラスのツールに含まれている必要があります。

  IMPLEMENT_SERIAL

  IMPLEMENT_SERIAL(CLASS_NAME、base_class_name、wSchema)

  説明:

  クラス名と実行時の位置によって動的アクセスCObjectの派生クラスの直列構造に必要なC ++コードを確立します。その後、IMPLEMENT_SERIAL使用.CPPファイル内のマクロ、およびコードたら、その結果のオブジェクトをリンクします。

  ON_COMMAND

  ON_COMMAND(ID、memberFxn)

  説明:

   このメッセージは、クラスウィザードにまたは手動でマクロによってマッピングされます。これは、コマンドメッセージを処理(例えば、メニュー項目またはツールバーボタンのような)コマンドのユーザー・インターフェースからその機能を示します。WindowsのWM_COMMANDメッセージが受信されるのIDを指定したときに、コマンドオブジェクト、ON_COMMANDは、このメッセージを処理memberFxnメンバ関数を呼び出します。ユーザーのメッセージマップでは、各メニューコマンドまたはアクセラレータのためにON_COMMANDマクロ文を持っていないはずです(メッセージ処理機能にマップする必要があります)。

  ON_CONTROL

  ON_CONTROL(wNotifyCode、ID、memberFxn)

  説明:

  レギュラーを示す制御メッセージを処理するように機能するかを示します。それは彼女の夫の制御メッセージウィンドウに母親から送らこれらの制御メッセージを識別する。

  ON_MESSAGE

  ON_MESSAGE(メッセージ、memberFxn)

  説明:

   関数は、ユーザー定義のメッセージを処理するかを示します。ユーザ定義メッセージは、一般的範囲にWM_USER 0x7FFを定義しました。ユーザー定義のメッセージは、標準のWindows WM_MESSAGEメッセージはありません任意のメッセージです。ユーザのメッセージをマッピングし、各メッセージは、処理機能にマッピングされなければなりません。ユーザー定義のメッセージON_MESSAGEマクロのステートメントがあるはずです。

  ON_REGISTERED_MESSAGE

  ON_REGISTERED_MESSAGE(nmessageVarible、memberFxn)

  説明:

  窓関数は、新しいメッセージを定義するために使用されているWindows RegisterWindowsMesage、メッセージはシステム全体で一意であることが保証されます。このマクロは、メッセージが登録されて処理する関数を示しています。NMessageViable変数はNEAR修飾子で定義されるべきです。

  ON_UPDATE_COMMAND_UI

  ON_UPDATE_COMMAND_UI(ID、memberFxn)

  説明:

  このマクロは、典型的には、処理命令メッセージを変更するためのユーザーインターフェイスに指示するように機能するメッセージマップクラスウィザードを介して挿入されます。ユーザーのメッセージのマッピング、ユーザーインターフェースは、各コマンドを変更する(具体的な情報がメッセージハンドラにマップされている)ON_UPDATE_COMMAND_UIマクロ文を持っている必要があります。

  ON_VBXEVENT

  ON_VBXEVENT(wNotifyCode、memberFxn)

  説明:

  このマクロは、典型的には、プロセス制御VBXからのメッセージを示すように機能するメッセージマップクラスウィザードを介して挿入されます。メッセージでは、ユーザがマップのそれぞれにマッピングされ、メッセージハンドラのVBX制御メッセージは、マクロ文を持っている必要があります。

  RUNTIME_CLASS

  RUNTIME_CLASS(CLASS_NAME)

  説明:

   クラスの人々はクラス構造体から取得し、このマクロC ++ランタイムを使用してください。CLASS_NAMEで指定RUNTIME_CLASSクラス構造たCRuntimeClassへのポインタを返します。DECLARE_DYNAMIC、DECLARE_DYNCREATEまたはDECLARE_SERIALのCObjectのみが定義された派生クラスへのポインタを返す前に構造をたCRuntimeClass。

  THROWの

  THROW(exception_object_pointer)

  説明:

  指定された例外を送ります。プログラムの動作を中断投げる、プログラムは、ユーザ関連するCATCHブロックに制御を渡します。ユーザーがCATCHブロックを提供していない場合は、コントロールがMFCモジュールに渡され、彼がエラーを出力し、動作を終了します。

  THROW_LAST

  THROW_LAST()

  説明:

  このマクロは、ユーザがローカル確立の例外を送信することを可能にします。ユーザーは、ちょうど発見した珍しい削除しようとするので、一般的に、この例外がオーバーフローして削除されます。THROW_LASTを使用して、この例外は次のCATCHハンドラに直接転送されます。

  TRACE

  TRACE(EXP)

  説明:

   ダンプ・デバイス、例えば、ファイル、またはデバッグモニタにフォーマットされた文字列、およびprintf関数は、同様の機能を提供します。printfのCと同じ手順下MS_DOS、TRACEマクロは、実行時の便利な形態でトラッキング変数の値です。デバッグ環境では、afxDumpにマクロトレース出力。リリースバージョンでは、彼はどんな仕事をしません。

  注:

  このマクロは、MFCのデバッグバージョンでのみ有効です。

  TRACE0

  TRACE0(EXP)

  説明:

   と同様のTRACEが、彼はとても少ないスペースDGROUPを使用して、コードセグメントではなく、DGROUP内の文字列を追跡します。TRACE0追跡マクロは一の変形の基であり、マクロ出力をデバッグするために使用することができます。このグループは、撮影したパラメータの数が異なることを除いてTRACE0、TRACE1、TRACE2とTRACE3、これらのマクロを含んでいます。TRACE0はちょうどフォーマット文字列は、単純なテキストメッセージのために使用することができる取ります。TRACE1は、フォーマットされた文字列を加えた変数を取る-変数をダンプします。同様に、TRACE2、TRACE3は(フォーマット後の文字列)は、2つのまたは3つのパラメータを採取しました。ためにユーザーがアプリケーションをリリースする場合は、データのみがafxDumpにダンプ。

  注:

  このマクロは、MFC DEBUGでのみ有効です。

  TRACE1、

  TRACE1、(EXP、PARAM1)

  説明:

  参照してくださいTRACE0

  TRACE2

  TRACE2(EXP、PARAM1、PARAM2)

  説明:

  TRACE0を参照してください。

  TRACE3

  TRACE3(EXP、PARAM1、PARAM2、Param3)

  説明:

  TRY

  TRY

  :説明

  マクロブロックTRYのこの確立しています。一つの例外を識別するコードのブロックを除外してみてください。次のブロックとAND_CATCHに取り扱い、これらCATCH例外。送信が許可されている:外部異常がTRYブロックを渡すか、それらを無視、またはTHROW_LASTマクロを使用することができます。

  VERIFY

  VERIFY(BooleanExpression)

  :説明

   MFCのデバッグバージョンでは、マクロはその変数の値を計算ベリファイ。結果が0である場合、マクロは、診断メッセージを出力してプログラムをアボート。条件が0でない場合は、何が動作しません。診断は、次の形式があります。アサーションは名前は、ソースファイルの名前である行のファイルに失敗し、numが中止されたソースファイルの行番号の障害です。MFCのリリースバージョンでは、式の値を計算するが、プログラムを印刷したり、停止しないことを確認します。たとえば:式が関数呼び出しの場合、呼び出しが成功しました。



ます。https://www.cnblogs.com/userinterface/archive/2005/04/07/133140.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_33670713/article/details/93668149