テクニカル ノート 22: 標準コマンドの実装

このノートでは、MFC 2.0 により提供される標準コマンドの実装について説明します。多くの標準コマンドの実装に使用されるメカニズムについて説明しますので、テクニカル ノート 21最初お読みください。 ください。

この説明では、MFC アーキテクチャ、Api、および一般的なプログラミングの知識を想定しています。文書として文書化されていない」実装のみ」Api を参照してください。これの機能または MFC でをプログラムする方法について学習を開始する場所ではありません。Visual の C++ プログラマのガイドのより一般的な情報と記載されている Api の詳細についてを参照してください。

問題

MFC は、ヘッダー ファイル AFXRES の多くの標準コマンド Id を定義します。H. フレームワーク サポートこれらのコマンドは異なります。どこで、どのようにこれらのコマンドは、framework クラスを処理を理解するだけでなく、フレームワーク内部で動作しますが、標準の実装をカスタマイズし、うまくいけば、あなた自身のコマンド ハンドラーを実装するためのいくつかのテクニックを教える方法に有用な情報を提供する方法を表示。

このテクニカル ノートの内容

各コマンド ID が 2 つのセクションに記載されています。:

ほとんどの既定のコマンド実装フレームワークの基本クラスのメッセージ マップに既に結び付けられています。派生クラスで明示的な配線を必要とするいくつかのコマンドの実装です。これらは「下注」を参照してください。AppWizard で正しいオプションを選択した場合は、これらの既定のハンドラーを生成されたスケルトン アプリケーションに接続されます。

名前付け規則

標準コマンドは、可能な場合に使用をお勧めします単純な名前付け規則に従います。最も標準的なコマンドは、標準の場所で、アプリケーションのメニュー バーに位置しています。コマンドのシンボリック名」メニュー項目の名前で、標準のポップアップ メニュー名、続いて id _「で開始します。シンボリック名は大文字でアンダー スコア単語の分割のです。標準メニュー項目名を持たないコマンドでは、論理名「id _」(たとえば、 ID_NEXT_PANE) 定義されます。

プリフィックス「id _」を使用して、メニュー項目、ツールバー ボタン、またはその他のコマンド ユーザー インターフェイス オブジェクトにバインドするように設計されているコマンドを指定します。「Id _」コマンドを処理するコマンド ハンドラーが MFC コマンド アーキテクチャのON_COMMANDおよびON_UPDATE_COMMAND_UIメカニズムを使用する必要があります。

コマンド アーキテクチャおよびメニュー固有のコードを有効にし、それらを無効にする必要がありますしないメニュー項目を標準の「idm _」プレフィックスを使用することをお勧めします。もちろん以来、次の MFC コマンド アーキテクチャ (ツールバーで作業するので) コマンド ハンドラーがより強力になりますだけでなく、コマンド ハンドラーのコードを再利用でき、特定のメニュー コマンドの数は小さなする必要があります。

ID の範囲

テクニカル ノート 20 ID 範囲の MFC の使用の詳細についてを参照してください。

MFC の標準コマンドとする 0xEFFF の範囲に落ちる。以来は、ライブラリの将来のバージョンで変更してくださいこれらの Id の特定の値に依存しません。

アプリケーションは、0x8000 から 0 xdfff の範囲でそのコマンドを定義する必要があります。

標準コマンド Id

各コマンド ID は、ファイルのプロンプトを見つけることができる標準のメッセージ行プロンプト文字列です。RC。そのメニューのプロンプトの文字列 ID は、コマンド ID と同じである必要があります。

更新専用のコマンド ハンドラー

ステータス バーのインジケーターとして使用されるいくつかの標準コマンドの Id です。これらは、同じ更新コマンド UI 処理機構アプリケーションのアイドル時に、現在の状態を表示します。ユーザーが選択できないので (は、ステータス バーのペインをプッシュすることはできません)、それはON_COMMANDハンドラーはこれらのコマンド Id が意味を成していないし。

これらのすべての 3 つは、 CFrameWnd::OnUpdateKeyIndicator、コマンド ID を使用して、適切な仮想キーにマップする実装ヘルパーで実装されます。一般的な実装を有効または無効にします (無効にステータス ウィンドウを = 本文なし)、適切な仮想キーが現在ロックされているかどうかに応じて、 CCmdUIオブジェクト。

このコマンドのハンドラーのカスタマイズをお勧めしません。

現在これらの指標の標準実装はありません。

これらの指標を実装する場合は、使用してこれらのインジケーター Id と、ステータス バーのインジケーターの順序を維持をお勧めします (つまり、この順序で: EXT、キャップ、NUM、SCRL、上書、REC)。

番号順テクニカル ノート|nbsp;カテゴリ別テクニカル ノート(&N)

Index