Share via


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

[!メモ]

次のテクニカル ノートは、最初にオンライン ドキュメントの一部とされてから更新されていません。結果として、一部のプロシージャおよびトピックが最新でないか、不正になります。最新の情報について、オンライン ドキュメントのキーワードで関係のあるトピックを検索することをお勧めします。

ここでは、 MFC 2.0 で用意されている標準コマンド実装について説明します。標準コマンドの多くの実装に使用される機能を説明するため テクニカル ノート 21 を最初に確認します。

この説明は、 MFC アーキテクチャ、 API とプログラミングの一般的な推奨事項についての知識を前提としています。記載されている、非公開 「実装」 API のみ説明します。これにより、 MFC でのプログラミング方法の機能の学習を開始する場所またはではありません。多くの一般情報についてされた API の詳細については、 Visual C++ を参照してください。

問題

MFC ヘッダー ファイルは、 AFXRES.H. の多くの標準コマンド ID を定義します。これらのコマンドのサポート、フレームワークは異なります。これらのコマンドは、フレームワーク クラスが処理する場所とを理解することは、フレームワークで内部の動作が、表示せず方法で有用な情報を既定の実装をカスタマイズし、実行のいくつかの手法をコマンド ハンドラーを独自に教えるかを提供します。

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

各コマンド ID が 2 のセクションで説明されています:

  • タイトル: コロンで区切られたコマンドのオブジェクト (たとえば、 「現在のドキュメント」を格納します)続くコマンド ID のシンボル名 (たとえば、 ID_FILE_SAVE)。

  • のクラスでコマンドを実行し、とを既定の実装がする方法を記述する一つ以上の段落

ほとんどの既定のコマンドの実装は、フレームワークの基本クラスのメッセージ マップで事前設定されます。派生クラスで明示接続を必要なコマンド実装があります。これらは 「説明」で説明します。AppWizard の右のを選択した場合は、これらの既定のハンドラーは、生成されたスケルトン アプリケーションの自動的に接続されます。

名前付け規約

標準のコマンドは、可能であれば推奨使用すると簡単な名前付け規則に従います。ほとんどの標準コマンドは、アプリケーションのメニュー バーの標準の場所にあります。コマンドのシンボル名はメニュー項目の名前を続ける標準ポップアップ メニューの名前の前に 「ID_」で始まります。シンボル名にアンダースコアの単語の区切りは、との大文字にします。標準メニュー項目の名前がないコマンドに対して、論理的なコマンド名は 「ID_」で定義された開始 (たとえば、 ID_NEXT_PANE)です。

ここでは、メニュー項目、ツールバー ボタン、または他のコマンド ユーザーインターフェイス オブジェクトにバインドするように設計されたコマンドを示すにはプレフィックス 「ID_」を使用します。「ID_」コマンドを処理しているコマンド ハンドラーは ON_COMMAND を使用する必要があり、 MFC の ON_UPDATE_COMMAND_UI の機能は、アーキテクチャにコマンド。

また、コマンド アーキテクチャに従っていないし、メニュー仕様コードをそれらを有効または無効にする必要がないメニュー項目のを使用して標準 「IDM_」プレフィックスをお勧めします。この特定のコマンドがコマンド ハンドラーのみより強力に (ツールバーを使用して、まだ)は、 MFC コマンド アーキテクチャに従って、以降小さい必要があるメニューの数は、コマンド ハンドラー コードを再利用できます。

ID の範囲

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

MFC の標準コマンドは、 0xE000 範囲に 0xEFFF になります。 これらは、ライブラリの将来のバージョンで変更される可能性があるため、これらの ID の特定の値に依存しないでください。

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

標準コマンド ID

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

  • ID_FILE_NEW は、新しいを作成およびドキュメントを空にします。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnFileNew は、アプリケーションのドキュメント テンプレートの数によってこのコマンドを異なる方法で実行します。CDocTemplateが 1 だけの場合、 CWinApp::OnFileNew は、その型の新しいドキュメント、適切なゾーンとビュー クラスを作成します。

    複数の CDocTemplateがある場合は、 CWinApp::OnFileNew は選択するために使用するドキュメント型、ダイアログAFX_IDD_NEWTYPEDLGする ()を持つユーザーを求められます。選択した CDocTemplate がドキュメントを作成するために使用されます。

    ID_FILE_NEW 1 の共通のカスタマイズでは、ドキュメント型の異なる、よりグラフィカルな選択項目を提供することです。この場合 CMyApp::OnFileNew を作成し、 CWinApp::OnFileNewの代わりにメッセージ マップに配置することもできます。基本クラスの実装をダイヤルする必要はありません。

    ID_FILE_NEW のもう一つの一般的なカスタマイズは、各種類のドキュメントを作成するために別のコマンドを提供することです。この場合、新しいコマンド ID (ID_FILE_NEW_CHART と ID_FILE_NEW_SHEET を定義する必要があります。

  • ID_FILE_OPEN は、既存のドキュメントを開きます。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnFileOpenCWinApp::DoPromptFileName を開くファイルのファイル名またはパスと CWinApp::OpenDocumentFile が表示されている呼び出しの簡単な実装がよくあります。CWinApp の実装を定期的に DoPromptFileName は FileOpen 標準ダイアログを持ち出し、現在のドキュメント テンプレートから派生したファイル拡張子を読み込みます。

    ID_FILE_OPEN 1 の共通のカスタマイズは FileOpen ダイアログをカスタマイズまたは追加ファイル フィルターを追加します。これをカスタマイズする推奨方法は、ドキュメント ファイルまたはパス名で FileOpen ダイアログと呼び出し CWinApp::OpenDocumentFile を作成すると、既定の実装を置き換えることです。基本クラスをダイヤルする必要はありません。

  • ID_FILE_CLOSE は現在開いているドキュメントを閉じます。

    CDocument::OnFileClose が変更された場合、ダイヤルし、 OnCloseDocumentをダイヤルするユーザーがドキュメントを保存するかどうかを確認するようにを CDocument::SaveModified 。ドキュメントの破棄を含むすべての最後のロジックは、 OnCloseDocument ルーチンで実行されます。

    [!メモ]

    異なる方法でID_FILE_CLOSE 行為ドキュメント フレーム ウィンドウに送信 WM_CLOSE のメッセージや SC_CLOSE のシステム コマンドで。ウィンドウを閉じるには、ドキュメントを示す最後のフレーム ウィンドウである場合にのみ、ドキュメントを閉じます。ID_FILE_CLOSE のドキュメントを閉じると、ドキュメントのみ終了が、ドキュメントを示すすべてのフレーム ウィンドウを閉じます。

  • ID_FILE_SAVE は、現在のドキュメントを保存します。

    実装は OnFileSaveOnFileSaveAs両方に使用されるヘルパー ルーチン CDocument::DoSave を使用します。FileNew の場合のように保存されていなかったまたは読み取り専用ドキュメントからテキスト ドキュメント (つまり、がパス名を格納する場合、 OnFileSave のロジックが ID_FILE_SAVE_AS コマンドのように機能し、ユーザーに新しいファイル名を指定するよう要求。ファイルを開く、保存を行う実際のプロセスは、仮想関数 OnSaveDocumentによって実行されます。

    ID_FILE_SAVEをカスタマイズする 2 とおりの一般的な理由があります。保存せずドキュメントでは、ユーザー インターフェイスから ID_FILE_SAVE のメニュー項目およびツールバー ボタンを削除します。またはがダーティ、ドキュメント (つまり、が CDocument::SetModifiedFlag)をダイヤルしていないことを確認してくださいフレームワークは、ドキュメントを保存しません。ディスク ファイル以外のどこかに格納するドキュメントに対して、その操作の新しいコマンドを定義します。

    COleServerDocの場合、 ID_FILE_SAVE は、ファイルの保存 (通常のドキュメント用)とファイルの更新のためにも使用されます (埋め込みドキュメントの場合)。

    ドキュメント データが個々のディスク ファイルに格納し、シリアル化する実装を既定 CDocument を使用しない場合は、 OnFileSaveの代わりに CDocument::OnSaveDocument をオーバーライドする必要があります。

  • ID_FILE_SAVE_AS は別のファイル名の下に、現在のドキュメントを保存します。

    CDocument::OnFileSaveAs の実装は OnFileSaveと同じ CDocument::DoSave ヘルパー ルーチンを使用します。OnFileSaveAs コマンドは ID_FILE_SAVE としてドキュメントに保存の前にファイル名がない場合は、扱われます。COleServerDoc::OnFileSaveAs は通常のドキュメント データ ファイルを保存または個別のファイルとして他のアプリケーションに埋め込まれた OLE オブジェクトを表すサーバー ドキュメントを保存するためのロジックを実装します。

    ID_FILE_SAVEのロジックをカスタマイズする場合、通常は ID_FILE_SAVE_AS と同様にカスタマイズするか、を 「[名前を付けて保存」操作は、ドキュメントに適用できない場合があります。必要な場合を除き、メニュー バーのメニュー項目を削除できます。

  • ID_FILE_SAVE_COPY_AS、新しい名前でコピーの現在のドキュメントを保存します。

    COleServerDoc::OnFileSaveCopyAs の実装は CDocument::OnFileSaveAsに似ていますが、基になるファイルへのドキュメント オブジェクトは保存の後に 「接続されていません」。保存、それがまだ 「変更」前につまり、インメモリ ドキュメントが 「変更された場合」。また、このコマンドは、ドキュメントに格納されているパス名またはタイトルには影響しません。

  • ID_FILE_UPDATE は、ドキュメントを格納するコンテナーに通知します。

    埋め込みを保存する必要があります。単に COleServerDoc::OnUpdateDocument の実装の notifiies コンテナー。コンテナーは、埋め込みオブジェクトを格納する適切な OLE API をダイヤルします。

  • ID_FILE_PAGE_SETUP は、アプリケーション固有のページ設定/ダイアログ レイアウトを呼び出します。

    現在このダイアログの既定のがなく、フレームワークは、このコマンドの既定の実装はありません。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_FILE_PRINT_SETUP は、標準の印刷ダイアログ設定を呼び出します。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    このコマンドは、ユーザーがこのアプリケーションの少なくともこのまでのすべてのドキュメントのプリンター、印刷設定をカスタマイズできるようにする標準印刷設定ダイアログを呼び出します。全体のシステムの既定のプリンター設定を変更するコントロール パネルのを使用します。

    CWinApp::OnFilePrintSetupCPrintDialog のオブジェクトを作成し、 CWinApp::DoPrintDialog の実装の関数を呼び出す簡単な実装がよくあります。これは、アプリケーション既定のプリンター設定を設定します。

    このコマンドをカスタマイズするための共通の必要は格納時にドキュメントに保存する必要がある、ドキュメントのプリンター設定をできます。これを行うには、 CPrintDialog::DoModal, をダイヤルし、変更したプリンター設定を CPrintDialog のオブジェクトを作成し、適切なプリンターの属性 (通常 hDevModehDevNames)初期化する CDocument のクラスのメッセージマップ ハンドラーを追加する必要がある保存します。信頼性の高い実装する際に、的にある既定のシステムレベルに対処するとプリンターの変更を追跡するためにエラーと CWinApp::UpdatePrinterSelection を検出するに CWinApp::DoPrintDialog の実装を表示する必要があります。

  • 現在のドキュメントの ID_FILE_PRINT の標準印刷

    [!メモ]

    - CViewにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    このコマンドは、現在のドキュメント、または、開始印刷エンジン標準印刷ダイアログと実装を呼び出すことを含む印刷プロセスを正しく印刷します。

    CView::OnFilePrint は、このコマンドと主要な印刷ループを実装します。これは、印刷ダイアログのユーザーの処理に必要な仮想 CView::OnPreparePrinting をダイヤルします。これは、プリンターにプリンターに移動するには、それぞれ印刷の進行状況ダイアログAFX_IDD_PRINTDLG()、および送信を StartDoc のエスケープ DC を出力する準備をします。CView::OnFilePrint は、メイン ページ指向の印刷ループが含まれています。各ページについて、仮想 CView::OnPrepareDCStartPage のエスケープおよびそのページの仮想 CView::OnPrint を呼び出すことが表示されているダイヤルします。完全な場合、仮想 CView::OnEndPrinting が呼び出され、印刷の進行状況ダイアログが閉じます。

    MFC の印刷アーキテクチャは、印刷や印刷プレビューのためのさまざまな方法でフックするように設計されています。通常は、ページの印刷指向タスクに対して十分な CView のさまざまなオーバーライド可能関数を検索します。アプリケーションの場合にのみ使用する、ページのプリンターは、 ID_FILE_PRINT の実装を置き換える必要を検索し、出力をリダイレクトづけました。

  • ID_FILE_PRINT_PREVIEW によっては現在のドキュメントの印刷プレビュー モードがあります。

    [!メモ]

    - CViewにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CView::OnFilePrintPreview についてされたヘルパー関数 CView::DoPrintPreviewを呼び出して印刷プレビュー モードを開始します。CView::DoPrintPreview は、 OnFilePrint が印刷ループのメイン エンジンであるため、印刷プレビューのループのメイン エンジンです。

    印刷プレビューの操作はさまざまな方法で DoPrintPreviewに異なるパラメーターを渡すことによってカスタマイズできます。テクニカル ノート 30を参照し、印刷プレビューの詳細の一部およびそれをカスタマイズする方法を説明する。

  • コンテナーに存在するファイルの MRU listのコマンド ID のID_FILE_MRU_FILE1…**FILE16   **A の範囲。

    CWinApp::OnUpdateRecentFileMenuON_UPDATE_COMMAND_UI の機能の高度な用途の 1 C の更新コマンドの UI ハンドラーです。メニュー リソースには、 ID ID_FILE_MRU_FILE1の単一のメニュー項目を定義する必要があります。メニュー項目は、無効にしておくこと。

    MRU リストが拡大し、より多くのメニュー項目が一覧に追加されます。標準の CWinApp の実装は、 4 種類の最近使ったファイルの既定の制限に設定されます。よりも大きいか小さい方の値を持つ CWinApp::LoadStdProfileSettings を呼び出して、既定値を変更できます。MRU リストは、アプリケーションの .ini ファイルに格納されます。一覧に、アプリケーションの InitInstance 関数で LoadStdProfileSettingsをダイヤルする読み込まれ、アプリケーション終了時格納されます。MRU の更新コマンドの UI ハンドラーは、 [ファイル] メニューの表示の相対パス、絶対パスを変換します。

    CWinApp::OnOpenRecentFile は実際のコマンドを実行する ON_COMMAND ハンドラーです。の場合は、ファイルを開き、 MRU リストの更新のすべての作業を行う MRU リストからファイル名を取得し、 CWinApp::OpenDocumentFileをダイヤルします。

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

  • ID_EDIT_CLEAR は、現在の選択を解除します

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditViewCEdit::Clearを使用してこのコマンドの実装を提供します。コマンドは、現在の選択範囲がない場合は無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_CLEAR_ALL は、ドキュメント全体をオフにします。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします実装例については、 " MFC のチュートリアルのサンプル Scribble を参照してください。

  • ID_EDIT_COPY がクリップボードに現在の選択をコピーします。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditViewCEdit::Copyを使用して CF_TEXT としてクリップボードに選択したテキストを現在コピーこのコマンドの実装を提供します。コマンドは、現在の選択範囲がない場合は無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_CUT がクリップボードに現在の選択を切り取ります。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditViewCEdit::Cutを使用して CF_TEXT としてクリップボードに選択したテキストを現在切り取りこのコマンドの実装を提供します。コマンドは、現在の選択範囲がない場合は無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_FIND は、検索操作を、モードレス ダイアログ持ち出しますの検索を開始します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditView は、使用する実装のヘルパー関数 OnEditFindReplace をダイヤルし、以前の検索を保存するとプライベート実装の変数の設定を置き換えます。このコマンドの実装を提供します。CFindReplaceDialog のクラスはユーザーがダイアログを表示するためのモードレス ダイアログを管理するために使用されます。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_PASTE は、現在のクリップボードの内容を挿入します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditViewCEdit::Pasteを使用して、選択したテキストを置換現在のクリップボードのデータをコピーこのコマンドの実装を提供します。コマンドがクリップボードに CF_TEXT が存在しない場合は無効です。

    COleClientDoc は、このコマンドには、更新コマンド ハンドラーの UI を提供します。クリップボードの次の値が設定が embeddable OLE アイテム/オブジェクト、コマンド無効になります。実際の貼り付けることができる実際のコマンドのハンドラーを作成する必要があります。OLE アプリケーションが他のフォームを貼り付けることができるビューまたはドキュメントの更新コマンドの UI ハンドラーを独自に提供する必要があります (つまり、どこかにコマンドの対象のルーティング COleClientDoc の前に)。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

    標準 OLE 実装を置き換えるために、 COleClientItem::CanPasteを使用します。

  • ID_EDIT_PASTE_LINK は、現在のクリップボードの内容からリンクを挿入します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    COleDocument は、このコマンドには、更新コマンド ハンドラーの UI を提供します。クリップボードから次の値を含めるの連結可能 OLE アイテム/オブジェクトが、コマンド無効になります。実際の貼り付けることができる実際のコマンドのハンドラーを作成する必要があります。OLE アプリケーションが他のフォームを貼り付けることができるビューまたはドキュメントの更新コマンドの UI ハンドラーを独自に提供する必要があります (つまり、どこかにコマンドの対象のルーティング COleDocument の前に)。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

    標準 OLE 実装を置き換えるために、 COleClientItem::CanPasteLinkを使用します。

  • ID_EDIT_PASTE_SPECIAL は、オプションの現在のクリップボードの内容を挿入します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。MFC はこのダイアログはありません。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_REPEAT は最後の操作を繰り返します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditView は最後の検索操作を繰り返します。このコマンドの実装を提供します。最後の検索のためのプライベート実装の変数が使用されます。コマンドは、検索を行うことができない場合は無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_REPLACE は置換操作を、は、モードレス ダイアログを置換を開始します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditView は、使用する実装のヘルパー関数 OnEditFindReplace をダイヤルし、以前の検索を保存するとプライベート実装の変数の設定を置き換えます。このコマンドの実装を提供します。CFindReplaceDialog のクラスがユーザーに対して、モードレス ダイアログを管理するために使用されます。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_SELECT_ALL は文書全体を選択します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditView は、ドキュメントのすべてのテキストを選択するこのコマンドの実装を提供します。コマンドは、選択するテキストが見つからない場合は無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_UNDO は最後の操作を元に戻します。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    CEditViewCEdit::Undoを使用してこのコマンドの実装を提供します。コマンドは CEdit::CanUndo が FALSE を返した場合無効です。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_EDIT_REDO を閉じて操作をやり直してされます。

    現在このコマンドの既定の実装はありません。各 CViewのこれを派生クラス実装します。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_WINDOW_NEW はアクティブ ドキュメントの別のウィンドウを開きます。

    CMDIFrameWnd::OnWindowNew は現在のドキュメントの別のビューを含む別のゾーンを作成するには、現在のドキュメントのドキュメント テンプレートを使用して、この強力な機能を実装します。

    ほとんどの複数のドキュメント インターフェイス (MDI) のペイン メニュー コマンドのように、コマンドはアクティブな MDI 子ウィンドウが存在しない場合は無効です。

    このコマンド ハンドラーのカスタマイズはお勧めしません。追加ビューまたはフレーム ウィンドウを作成するコマンドを提供する場合、通常はいずれの場合でも、独自コマンドを作成することです。CMDIFrameWnd::OnWindowNew からコードを複製を作成し、お気に入りの特定のゾーンとビュー クラスに変更できます。

  • ID_WINDOW_ARRANGE は MDI のペインでアイコンを配置します。

    CMDIFrameWnd は実装のヘルパー関数 OnMDIWindowCmdこの MDI の標準コマンドを実行します。このヘルパーは MDI ウィンドウのメッセージにコマンド ID をマップし、多くのコードを共有できます。

    ほとんどの MDI ウィンドウのメニュー コマンドのように、コマンドはアクティブな MDI 子ウィンドウが存在しない場合は無効です。

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

  • ID_WINDOW_CASCADE は、ペインを行うのように従って、重複する落としますします。

    CMDIFrameWnd は実装のヘルパー関数 OnMDIWindowCmdこの MDI の標準コマンドを実行します。このヘルパーは MDI ウィンドウのメッセージにコマンド ID をマップし、多くのコードを共有できます。

    ほとんどの MDI ウィンドウのメニュー コマンドのように、コマンドはアクティブな MDI 子ウィンドウが存在しない場合は無効です。

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

  • 水平方向の ID_WINDOW_TILE_HORZ の並べて表示ペイン。

    このコマンドは ID_WINDOW_CASCADEなどの CMDIFrameWnd で別の MDI ウィンドウのメッセージが操作に使用する以外、実行されます。

    アプリケーションの既定のタイルの方向を選択する必要があります。ID_WINDOW_TILE_HORZID_WINDOW_TILE_VERTへのペインの 「並べて表示」のメニュー項目の ID を変更することで、これを行うことができます。

  • 垂直方向の ID_WINDOW_TILE_VERT の並べて表示ペイン。

    このコマンドは ID_WINDOW_CASCADEなどの CMDIFrameWnd で別の MDI ウィンドウのメッセージが操作に使用する以外、実行されます。

    アプリケーションの既定のタイルの方向を選択する必要があります。ID_WINDOW_TILE_HORZID_WINDOW_TILE_VERTへのペインの 「並べて表示」のメニュー項目の ID を変更することで、これを行うことができます。

  • 分割に ID_WINDOW_SPLIT キーボード インターフェイス。

    CViewCSplitterWnd の実装に対してこのコマンドを処理します。ビューが分割ウィンドウの一部である場合、このコマンドは実装の関数 CSplitterWnd::DoKeyboardSplitに委任します。これは、キーボード ユーザーまたは unsplit が分割ペイン分割するようにするモードに分割を配置します。

    このコマンドは、ビューの分割に存在しない場合は無効です。

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

  • ID_APP_ABOUT は About] ダイアログ ボックスを呼び出します。

    ボックスに関するアプリケーションの既定の実装はありません。既定で AppWizard 作成されたアプリケーションは、アプリケーションのカスタム ダイアログ クラスを作成し、ボックスとしてとして使用します。AppWizard は、このコマンドを処理し、ダイアログを呼び出す単純なコマンド ハンドラーを記述します。

    ほとんどの場合、このコマンドを実行します。

  • ID_APP_EXIT アプリケーションの終了。

    CWinApp::OnAppExit は、アプリケーションのメイン ウィンドウへ WM_CLOSE のメッセージを送信することで、このコマンドを処理します。アプリケーション (ダーティ ファイルに対する入力要求など)の標準シャット ダウンは CFrameWnd の実装によって処理されます。

    このコマンド ハンドラーのカスタマイズはお勧めしません。CWinApp::SaveAllModifiedCFrameWnd の最後のロジック オーバーライドすることをお勧めします。

    このコマンドを実行する場合は、を使用してこのコマンド ID をお勧めします

  • ID_HELP_INDEX は .HLP ファイルのヘルプ トピックを示します。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnHelpIndex に含まれている CWinApp::WinHelpを呼び出すことによって、このコマンドを処理します。

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

  • ID_HELP_USING の表示方法ではヘルプを使用できません。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnHelpUsing に含まれている CWinApp::WinHelpを呼び出すことによって、このコマンドを処理します。

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

  • ID_CONTEXT_HELP は SHIFT-F1 ヘルプ モードを入力します。

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnContextHelp は、ヘルプ モードのカーソルを設定し、モーダル ループを入力し、ヘルプを表示するには、ウィンドウを選択するようにユーザーを待機することによって、このコマンドを処理します。 MFC のヘルプの実装の テクニカル ノート 28 を詳細については、 " " を参照してください。

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

  • ID_HELP は、現在のコンテキスト ヘルプを提供します

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    CWinApp::OnHelp は、現在のアプリケーション コンテキストの右のヘルプ コンテキストを取得して、このコマンドを処理します。これは単純な F1 ヘルプ、メッセージ ボックスのヘルプなどを処理します。 MFC のヘルプの実装の テクニカル ノート 28 を詳細については、 " " を参照してください。

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

  • ID_DEFAULT_HELP の表示は、コンテキストのヘルプを設定します

    [!メモ]

    - CWinAppにこの機能を有効にする派生クラスのメッセージ マップこれを接続します。

    このコマンドは、通常、 CWinApp::OnHelpIndexにマップされます。

    別のコマンド ハンドラーは、既定のヘルプとヘルプ索引間の違いが必要な場合提供できます。

  • ID_NEXT_PANE は、次のペインに移動します

    CViewCSplitterWnd の実装に対してこのコマンドを処理します。ビューが分割ウィンドウの一部である場合、このコマンドは実装の関数 CSplitterWnd::OnNextPaneCmdに委任します。これは、分割ウィンドウの次のペインにアクティブなビューを移動します。

    このコマンドは、ビューの分割にない場合、またはに進む次のペインが存在しない場合は無効です。

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

  • ID_PREV_PANE は前のペインに移動します

    CViewCSplitterWnd の実装に対してこのコマンドを処理します。ビューが分割ウィンドウの一部である場合、このコマンドは実装の関数 CSplitterWnd::OnNextPaneCmdに委任します。これは、分割の前のペインにアクティブなビューを移動します。

    このコマンドは、ビューの分割にない場合、またはに進む前のペインが存在しない場合は無効です。

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

  • ID_OLE_INSERT_NEW は、新しい OLE オブジェクトを挿入します。

    現在このコマンドの既定の実装はありません。CViewのこれを - 現在の選択に新しい OLE アイテム/オブジェクトを挿入する派生クラス実装します。

    すべての OLE クライアント アプリケーションは、このコマンドを実行する必要があります。AppWizard は、 OLE オプションとビュー クラスで、完了する必要 OnInsertObject のスケルトン実装を作成します。

    このコマンドの完全な実装については、 " MFC サンプルの OLE OCLIENT の例を参照してください。

  • ID_OLE_EDIT_LINKS は、 OLE リンクを編集します

    COleDocument を使用してこのコマンドを MFC 提供される標準の OLE のダイアログの実装を処理します。このダイアログの実装は COleLinksDialog のクラスを使用してアクセスします。現在のドキュメント内の次の値が設定されているリンク、コマンドが無効になります。

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

  • ID_OLE_VERB_FIRST…最後の OLE 動詞の ID の範囲

    COleDocument は、現在選択されている OLE アイテム/オブジェクトによってサポートされている動詞に対してこのコマンド ID の範囲を使用します。これは、特定の OLE アイテム/オブジェクト型ができる以上のカスタム動詞をサポートする必要があるため範囲です。アプリケーションのメニューで、 ID_OLE_VERB_FIRSTの ID の 1 種類のメニュー項目が必要です。プログラムを実行すると、メニューは適切なメニューの動詞について更新されます (以上の動詞のポップアップ メニュー)。OLE メニューの管理はこのコマンドの更新コマンドのハンドラーでされた UI AfxOleSetEditMenuによって処理されます。

    この範囲のコマンド ID を処理するための明示的なコマンド ハンドラーがありません。COleDocument::OnCmdMsg はこの範囲のすべてのコマンド ID をトラップして、ゼロ ベースの動詞の数に回転、その動詞のサーバーを起動するようにオーバーライドされます ( COleClientItem::DoVerbを使用)。

    このコマンド ID の範囲のカスタマイズやそのほかの使用は推奨されていません。

  • ID_VIEW_TOOLBAR はツールバーのオンとオフを切り替えます

    CFrameWnd は、このコマンド、更新コマンドの UI ハンドラーをツールバーの表示状態を切り替える処理します。ツールバーは AFX_IDW_TOOLBARの子ウィンドウ ID のゾーンの子ウィンドウである必要があります。コマンド ハンドラーは、実際にツールバー ペインの表示状態を切り替えます。CFrameWnd::RecalcLayout が新しい条件にツールバーを含むフレーム ウィンドウを再描画するために使用されます。更新コマンドの UI ハンドラーはツールバーが表示されたらメニュー項目をチェックします。

    このコマンド ハンドラーのカスタマイズはお勧めしません。追加ツールバーを追加する場合は、このコマンドのコマンド ハンドラーと更新コマンドの UI ハンドラーの複製を作成し、変更する場合です。

  • ID_VIEW_STATUS_BAR がステータス バーのオンとオフを切り替えます

    このコマンドは ID_VIEW_TOOLBARなどの CFrameWnd で別の子ウィンドウ ID (AFX_IDW_STATUS_BAR)を使用する以外、実行されます。

更新のみコマンド ハンドラー

複数の標準コマンド ID がステータス バーにあるインジケーターとして使用されます。これらは、アプリケーション アイドル時間に現在の表示状態を表示するために同じ更新コマンドの UI 処理機能を使用します。、ユーザー (つまり、ステータス バーのペインを押すことはできません)によって選択できないため、これらのコマンド ID の ON_COMMAND ハンドラーを持つ意味がありません。

  • ID_INDICATOR_CAPS : Caps ロックのインジケーター。

  • ID_INDICATOR_NUM : NumLock キーのインジケーター。

  • ID_INDICATOR_SCRL : SCRL ロックのインジケーター。

  • ID_INDICATOR_KANA : KANA ロックのインジケーター (日本語のシステムでのみ有効な)。

これらの 3 つがすべて CFrameWnd::OnUpdateKeyIndicatorの適切な仮想キーに割り当てるには、コマンド ID を使用して実装のヘルパーで実行されます。共通の実装は、適切な仮想キーが現在ロックされているかどうか (無効にするステータス バー ペインに = テキストなし) CCmdUI のオブジェクトをで有効または無効にします。

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

  • ID_INDICATOR_EXT : EXTは、選択インジケーターを終了しました。

  • ID_INDICATOR_OVR : OVeR,rの STRIKE のインジケーター。

  • インジケーターを ordingID_INDICATOR_REC : REC

現在これらのインジケーターの既定の実装はありません。

これらのインジケーターを実行する場合は、ステータス バーで使用してこれらのインジケーターの ID およびインジケーターの順序を維持することをお勧めします (つまり、この順序で: EXT のキャップ、数値、 SCRL、 OVR、 REC)。

参照

その他の技術情報

番号順テクニカル ノート

カテゴリ別テクニカル ノート