ステータス バー ペインのテキストの更新

この記事では、MFC ステータスバーペインに表示されるテキストを変更する方法について説明します。 ステータスバー — クラス—のウィンドウオブジェクトには、 — 複数の "ペイン" が含まれています。各ペインは、ステータスバーの四角形の領域で、情報を表示するために使用できます。 たとえば、多くのアプリケーションでは、右端のウィンドウの CAPS LOCK、NUM LOCK、およびその他のキーの状態が表示されます。 また、多くの場合、アプリケーションでは、左端のウィンドウ (ペイン 0) に情報のテキストが表示されます ("メッセージウィンドウ" と呼ばれることもあります)。たとえば、既定の MFC ステータスバーでは、メッセージペインを使用して、現在選択されているメニュー項目またはツールバーボタンを説明する文字列を表示します。 ステータスバーの図は、アプリケーションウィザードで作成された MFC アプリケーションのステータスバーを示しています。

既定では、ペインの作成時に、MFC はペインを有効にしません CStatusBar 。 ペインをアクティブにするには、ステータスバーの各ペインの ON_UPDATE_COMMAND_UI マクロを使用して、ペインを更新する必要があります。 ペインは WM_COMMAND メッセージを送信しないため (ツールバーボタンのようなものではありません)、手動でコードを入力する必要があります。

たとえば、1つのペインに ID_INDICATOR_PAGE コマンド識別子があり、ドキュメント内の現在のページ番号が含まれているとします。 次の手順では、ステータスバーに新しいウィンドウを作成する方法について説明します。

新しいウィンドウを作成するには

  1. ペインのコマンド ID を定義します。

    [ 表示 ] メニューの [ リソースビュー] をクリックします。 プロジェクトリソースを右クリックし、[ リソースシンボル] をクリックします。 [リソースシンボル] ダイアログボックスで、をクリックし New ます。 コマンド ID 名を入力します (例:) ID_INDICATOR_PAGE 。 ID の値を指定するか、[リソースシンボル] ダイアログボックスで提示された値をそのまま使用します。 たとえば、の場合は、 ID_INDICATOR_PAGE 既定値をそのまま使用します。 [リソースシンボル] ダイアログボックスを閉じます。

  2. ペインに表示する既定の文字列を定義します。

    リソースビュー開いた状態で、アプリケーションのリソースの種類を一覧表示するウィンドウの [ 文字列テーブル ] をダブルクリックします。 文字列テーブルエディターを開いた状態で、[挿入] メニューの [新しい文字列] をクリックします。 ペインのコマンド ID (たとえば) を選択 ID_INDICATOR_PAGE し、"Page" などの既定の文字列値を入力します。 文字列エディターを閉じます。 (コンパイラエラーを回避するには、既定の文字列が必要です)。

  3. インジケーター配列にペインを追加します。

    ファイル MAINFRM.CPP にあります。CPP で、 インジケーター の配列を探します。 この配列は、ステータスバーのすべてのインジケーターのコマンド Id を左から右へ順に一覧表示します。 配列内の適切な位置に、次に示すように、ペインのコマンド ID を入力し ID_INDICATOR_PAGE ます。

    static UINT indicators[] =
    {
       ID_SEPARATOR,           // status line indicator
       ID_INDICATOR_CAPS,
       ID_INDICATOR_NUM,
       ID_INDICATOR_SCRL,
       ID_INDICATOR_PAGE,
    };
    

ペインにテキストを表示するには、 SetText ペインの更新ハンドラー関数でクラスのメンバー関数を呼び出すことをお勧めし CCmdUI ます。 たとえば、現在のページ番号を含む m_nPage 整数変数を設定し、を使用して、 その数値の文字列バージョンにペインのテキストを設定することができます。

注意

この SetText 方法をお勧めします。 メンバー関数を呼び出すことによって、このタスクを少し低いレベルで実行することができ CStatusBarSetPaneText ます。 それでも、更新ハンドラーが必要です。 ペインのハンドラーがないと、MFC はウィンドウを自動的に無効にし、その内容を消去します。

次の手順は、更新ハンドラー関数を使用してテキストをペインに表示する方法を示しています。

ペインにテキストを表示するには

  1. コマンドのコマンド更新ハンドラーを追加します。

    (MAINFRM.CPP の) のように、ハンドラーのプロトタイプを手動で追加し ID_INDICATOR_PAGE ます。H):

    afx_msg void OnUpdatePage(CCmdUI* pCmdUI);
    
  2. 適切なで。CPP ファイルで、(MAINFRM.CPP の) のように、ハンドラーの定義を追加し ID_INDICATOR_PAGE ます。CPP):

    void CMainFrame::OnUpdatePage(CCmdUI* pCmdUI)
    {
       pCmdUI->Enable();
       CString strPage;
       strPage.Format(_T("Page %d"), m_nPage);
       pCmdUI->SetText(strPage);
    }
    

    このハンドラーの最後の3行は、テキストを表示するコードです。

  3. 適切なメッセージマップで、(MAINFRM.CPP の) のように ON_UPDATE_COMMAND_UI マクロを追加し ID_INDICATOR_PAGE ます。CPP):

    ON_UPDATE_COMMAND_UI(ID_INDICATOR_PAGE, &CMainFrame::OnUpdatePage)
    

M_nPageメンバー変数 (クラス) の値を定義すると 、この手法により、アプリケーションが他のインジケーターを更新するのと同じ方法で、アイドル処理中にページ番号がウィンドウに表示されます。 M_nPage変更されると、次のアイドルループ中に表示が変更されます。

詳細については、次を参照してください。

関連項目

MFC でのステータスバーの実装
CStatusBar クラス