AFX_MSGとメッセージマッピングメカニズム

マクロ文はメッセージ応答関数で表されるAFX_MSG

メッセージマッピングメカニズムコアWindowsプログラミングです。アプリケーションは、メッセージ駆動型のメカニズムを介して仕事にWindowsでもあります。VCの開発環境では、システムメッセージ処理機能の多くが付属していますが、私たちの実際の総開発プロセスは回避されるか、または書かれたソフトウェア機能のニーズを満たすためにいくつかのカスタムメッセージ処理関数を記述することはできませんが。それでは、どのようにVCそれに独自のメッセージハンドラを定義していますか?それは、以下のステップを含みます。

図1に示すように、ユーザはマクロによって定義されたクラスのマッピング関数を定義するためにメッセージヘッダのようにしてメッセージタイプ識別子を定義します。以下のように定義されます。#define WM_USER1 WM_USER + 1 WM_USERシステムがユーザ定義メッセージタイプです。限り、このメッセージとして始点プラス0〜0x3FFFの間のオフセット値から定義され、システムは、他のメッセージの定義と矛盾はありません。

2.クラスを右クリックし、ポップアップメニューで、(メンバ関数を追加)「メンバ関数を追加」を選択します。ポップアップダイアログボックスで関数型入力関数ボックスの種類の機能を追加します。例えば:AFX_MSG LRESULTメッセージ処理機能グローバル機能を示すAFX_MSGキーワードで始まる必要があります。LRESULTは、関数の型です。これは、システムがコールバック関数であることを示しています。また、他のタイプかもしれません。このようなint型ボイドなど正当なデータ型として。関数名]ボックスに、関数の名前を入力します。例えば:MyFunctionを(WPARAMのwParam、LPARAM lParamに)、これら2つのパラメータは、メッセージ配信システムのための追加のパラメータです。情報パラメータのW 16ビットで始まります。Lは、32二つの情報パラメータの始まりです。

3、ソースファイルのクラスをオープンします。"ENDのメッセージマップ" "MESSAGE MAPをBEGIN" を見つけます。宣言メッセージとメッセージ処理機能を介し。例えば:ON_MESSAGE(WM_USER1、MyFunctionを).ON_MESSAGEユーザメッセージは、システム定義関数マッピング関数です。それはシステムメンテナンスのマーカーであるため、好ましくは最初から「//}} AFX_MSG_MAP」次の行の書き込みへの文のメッセージマッピングは、自動的にコードを生成しました。あなたはそれの上に書いた場合、そこに削除されることがあります。

図4は、機能だけで定義されたメッセージは、実装コードを書く、ソース・ファイル・クラスで見つかりました。

関数呼び出しを定義することができ、メッセージは、マッピング関数のSendMessage(WM_USER1)によって呼び出される必要がある5。WM_USER1たちは名前だけを定義したニュースです



おすすめ

転載: www.cnblogs.com/Stephen-Qin/p/12111945.html