ステータスバーに状態を表示させてみる




ステータスバーに状態を表示させる方法です。
NUMやカナ、CAPS以外の情報を表示させてみましょう。
まずは、ステータスバーを表示させる必要があります。と言ってもN村の場合は既に 表示されていたので、良く分かっていないのですが、多分ここだろうというソースを 紹介しておきます。

(サンプル:MainFrm.h)
protected:  // コントロール バー用メンバ
    CStatusBar  m_wndStatusBar;
    CToolBar    m_wndToolBar;


(サンプル:MainFrm.cpp)
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
    if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
        return -1;

    if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
        | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
        !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
    {
        TRACE0("Failed to create toolbar\n");
        return -1;      // 作成に失敗
    }
    if (!m_wndStatusBar.Create(this) ||
        !m_wndStatusBar.SetIndicators(indicators,
          sizeof(indicators)/sizeof(UINT)))
    {
        TRACE0("Failed to create status bar\n");
        return -1;      // 作成に失敗
    }
    // TODO: ツール バーをドッキング可能にしない場合は以下の3行を削除
    //       してください。
    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    EnableDocking(CBRS_ALIGN_ANY);
    DockControlBar(&m_wndToolBar);

m_wndStatusBar.SetIndicators関数パラメータのindicatorsでステータスバーに 何を表示させるかを定義してあるので、自分の好きなように修正します。
(サンプル:MainFrm.cpp)
static UINT indicators[] =
{
    ID_SEPARATOR,           // ステータス ライン インジケータ
    ID_INDICATOR_TAIL_STS,
//    ID_INDICATOR_KANA,
//    ID_INDICATOR_CAPS,
//    ID_INDICATOR_NUM,
//    ID_INDICATOR_SCRL,
};
サンプルではカナ,CAPS,NUM,SCRLをはずして、新しくID_INDICATOR_TAIL_STSという 項目を追加しています。
さらにID_INDICATOR_TAIL_STSに対応する日本語を定義する必要があります。
これは、リソースのString_Tableを修正するか、プロジェクト名.rcというファイル を直接修正します。
(サンプル:WinTail.cpp)
STRINGTABLE DISCARDABLE 
BEGIN
    ID_INDICATOR_EXT        "EXT"
    ID_INDICATOR_CAPS       "CAP"
    ID_INDICATOR_NUM        "NUM"
    ID_INDICATOR_SCRL       "SCRL"
    ID_INDICATOR_OVR        "上書"
    ID_INDICATOR_REC        "記録"
    ID_INDICATOR_KANA       "カナ"
    ID_INDICATOR_TAIL_STS   "停止中"
END
これで、起動時に設定したステータスが表示されるはずです。



次はステータスの表示内容を更新する方法です。
(サンプル:MainFrm.cpp)
    // ステータスバーの状態を更新する
    m_wndStatusBar.SetPaneText( 1,"Tail中",TRUE );
見ての通り、たったの1関数です。最初のパラメータは変更したいステータスが 左から数えて何番目になるかのインデックスです。
2番目のパラメータは更新後の文字列です。
3番目のパラメータにはTRUEを渡して下さい。




N総研ソフトウェア開発部のTOPに戻る。

このページに関するご意見・質問は
ドンタコスN村 E-mail:wnaka@coco.ned.co.jp
まで送信してください。