メッセージの種類
更新 : 2007 年 11 月
メッセージの種類に応じて作成するハンドラも異なります。メッセージは主に次の 3 種類に分類されます。
Windows メッセージ
この種類に分類されるメッセージは、プリフィックス WM_ で始まります (ただし WM_COMMAND は除きます)。Windows メッセージは、ウィンドウとビューで処理されます。この種類のメッセージには、メッセージの処理方法を指定するパラメータを持つものもあります。
コントロール通知
この種類に分類されるメッセージは、コントロールなどの子ウィンドウから親ウィンドウに送られる WM_COMMAND 通知メッセージです。たとえば、ユーザーがエディット コントロールのテキストを変更する操作を行うと、エディット コントロールから親ウィンドウに EN_CHANGE コントロール通知コード付きの WM_COMMAND メッセージが送られます。この通知メッセージを受け取ると、ウィンドウのメッセージ ハンドラは、コントロール内のテキストを取り出すなど、該当する処理を行います。
フレームワークでは、ほかの WM_ メッセージと同じようにコントロール通知メッセージを送り出します。ただし、ユーザーがボタンをクリックしたときに送られる BN_CLICKED コントロール通知メッセージは例外です。このメッセージは、特別にコマンド メッセージとして扱われ、ほかのコマンド メッセージと同じように送られます。
コマンド メッセージ
この種類に分類されるメッセージは、メニュー、ツール バー ボタン、アクセラレータ キーなどのユーザー インターフェイス オブジェクトから送られる WM_COMMAND 通知メッセージです。フレームワークでは、コマンド メッセージをほかのメッセージとは違う方法で処理します。コマンドは、「コマンド ターゲット」で説明するように、各種のオブジェクトでも処理できます。
Windows メッセージとコントロール通知メッセージ
1 番目と 2 番目の種類に分類されるメッセージ (Windows メッセージとコントロール通知) は、ウィンドウ (CWnd クラスからの派生クラスのオブジェクト) で処理されます。ウィンドウには、CFrameWnd、CMDIFrameWnd、CMDIChildWnd、CView、CDialog の各クラスと派生クラスのオブジェクトがあります。これらのオブジェクトには、Windows のウィンドウへのハンドル HWND がカプセル化されています。
コマンド メッセージ
3 番目の種類に分類されるコマンド メッセージは、各種のオブジェクト (ウィンドウとビューの他に、ドキュメント、ドキュメント テンプレート、およびアプリケーション オブジェクト自体) で処理されます。あるコマンドが特定のオブジェクトに直接影響を及ぼす場合は、そのオブジェクト自身でコマンドを処理します。たとえば、[ファイル] メニューの [開く] コマンドは、アプリケーションに論理的に関連付けられています。したがって、このコマンドを受け取ると、アプリケーションは指定されたドキュメントを開きます。そこで、[ファイル] メニューの [開く] コマンドのハンドラをアプリケーション クラスのメンバ関数にします。各コマンドをオブジェクトに転送する方法の詳細については、「フレームワークがハンドラを呼び出す方法」を参照してください。