CStatusBar クラス

テキスト出力用のペインまたは "インジケーター" の行を持つコントロール バーです。

構文

class CStatusBar : public CControlBar

メンバー

パブリック コンストラクター

名前 説明
CStatusBar::CStatusBar CStatusBar オブジェクトを構築します。

パブリック メソッド

名前 説明
CStatusBar::CommandToIndex 指定されたインジケーター ID のインデックスを取得します。
CStatusBar::Create ステータス バーを作成し、オブジェクトに CStatusBar アタッチし、初期フォントとバーの高さを設定します。
CStatusBar::CreateEx 埋め込みCStatusBarCtrlオブジェクトのCStatusBar追加のスタイルを持つオブジェクトを作成します。
CStatusBar::D rawItem 所有者描画ステータス バー コントロールの視覚的な側面が変更されたときに呼び出されます。
CStatusBar::GetItemID 特定のインデックスのインジケーター ID を取得します。
CStatusBar::GetItemRect 指定したインデックスの表示四角形を取得します。
CStatusBar::GetPaneInfo 特定のインデックスのインジケーター ID、スタイル、および幅を取得します。
CStatusBar::GetPaneStyle 特定のインデックスのインジケーター スタイルを取得します。
CStatusBar::GetPaneText 特定のインデックスのインジケーター テキストを取得します。
CStatusBar::GetStatusBarCtrl 基になる共通コントロールへの直接アクセスを許可します。
CStatusBar::SetIndicators インジケーター ID を設定します。
CStatusBar::SetPaneInfo 指定したインデックスのインジケーター ID、スタイル、および幅を設定します。
CStatusBar::SetPaneStyle 特定のインデックスのインジケーター スタイルを設定します。
CStatusBar::SetPaneText 特定のインデックスのインジケーター テキストを設定します。

解説

出力ペインは、通常、メッセージ行およびステータス インジケーターとして使用されます。 たとえば、選択したメニュー コマンドを簡単に説明するメニュー ヘルプ メッセージ行や、SCROLL LOCK、NUM LOCK、その他のキーの状態を示すインジケーターなどがあります。

MFC 4.0 に新しく追加されたメンバー関数 CStatusBar::GetStatusBarCtrl を使用すると、ステータス バーのカスタマイズと追加機能に対する Windows コモン コントロールのサポートを利用できます。 CStatusBar メンバー関数は、Windows 共通コントロールのほとんどの機能を提供します。ただし、呼び出 GetStatusBarCtrlすと、Windows 95/98 ステータス バーの特性をさらにステータス バーに表示できます。 GetStatusBarCtrl を呼び出す場合は、CStatusBarCtrl オブジェクトへの参照が返されます。 Windows 共通コントロールを使用したツール バーの設計の詳細については、「CStatusBarCtrl」を参照してください。 一般的なコントロールの詳細については、「Windows SDK の共通コントロール」を参照してください

フレームワークは、左端のインジケーターが位置 0 の配列にインジケーター情報を格納します。 ステータス バーを作成するときは、フレームワークが対応するインジケーターに関連付ける文字列 ID の配列を使用します。 その後、文字列 ID またはインデックスを使用してインジケーターにアクセスできます。

既定では、最初のインジケーターは "エラスティック" です。他のインジケーター ウィンドウでは使用されていないステータス バーの長さが使用されるため、他のペインは右揃えになります。

ステータス バーを作成するには、次の手順に従います。

  1. CStatusBar オブジェクトを構築します。

  2. Create (または CreateEx) 関数を呼び出してステータス バー ウィンドウを作成し、オブジェクトにCStatusBarアタッチします。

  3. SetIndicator を呼び出 して、 各インジケーターに文字列 ID を関連付けます。

ステータス バー ウィンドウでテキストを更新するには、次の 3 つの方法があります。

  1. CWnd::SetWindowText を呼び出して、ペイン 0 内のテキストのみを更新します。

  2. ステータス バーの ON_UPDATE_COMMAND_UI ハンドラーで CCmdUI::SetText を呼び出します。

  3. SetPaneText を呼び出して、任意のペインのテキストを更新します。

SetPaneStyle を呼び出して、ステータス バー ウィンドウのスタイルを更新します。

使用CStatusBarの詳細については、「MFC でのステータス バーの実装」および「テクニカル ノート 31: コントロール バー」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CControlBar

CStatusBar

必要条件

ヘッダー: afxext.h

CStatusBar::CommandToIndex

指定された ID のインジケーター インデックスを取得します。

int CommandToIndex(UINT nIDFind) const;

パラメーター

nIDFind
インデックスを取得するインジケーターの文字列 ID。

戻り値

成功した場合のインジケーターのインデックス。成功しなかった場合は -1。

解説

最初のインジケーターのインデックスは 0 です。

CStatusBar::Create

ステータス バー (子ウィンドウ) を作成し、それをオブジェクトに CStatusBar 関連付けます。

virtual BOOL Create(
    CWnd* pParentWnd,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

パラメーター

pParentWnd
Windows ウィンドウがステータス バーの 親である CWnd オブジェクトへのポインター。

dwStyle
ステータス バーのスタイル。 標準の Windows スタイルに加えて、これらのスタイルがサポートされています。

  • CBRS_TOPコントロール バーはフレーム ウィンドウの上部にあります。

  • CBRS_BOTTOMコントロール バーはフレーム ウィンドウの下部にあります。

  • CBRS_NOALIGNコントロール バーは、親のサイズを変更しても再配置されません。

nID
ツール バーの子ウィンドウ ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

また、初期フォントを設定し、ステータス バーの高さを既定値に設定します。

CStatusBar::CreateEx

ステータス バー (子ウィンドウ) を作成し、それをオブジェクトに関連付けるには、この関数を CStatusBar 呼び出します。

virtual BOOL CreateEx(
    CWnd* pParentWnd,
    DWORD dwCtrlStyle = 0,
    DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
    UINT nID = AFX_IDW_STATUS_BAR);

パラメーター

pParentWnd
Windows ウィンドウがステータス バーの 親である CWnd オブジェクトへのポインター。

dwCtrlStyle
埋め込まれた CStatusBarCtrl オブジェクトを作成するための追加のスタイル。 既定では、サイズ変更グリップまたはツールヒントがサポートされていないステータス バーを指定します。 サポートされているステータス バーのスタイルは次のとおりです。

  • SBARS_SIZEGRIP ステータス バー コントロールには、ステータス バーの右端にサイズ変更グリップが含まれています。 サイズ変更グリップは、サイズ変更境界線に似ています。これは、ユーザーがクリックしてドラッグして親ウィンドウのサイズを変更できる四角形の領域です。

  • SBT_TOOLTIPS ステータス バーはツールヒントをサポートします。

これらのスタイルの詳細については、CStatusBarCtrl の設定を参照してください

dwStyle
ステータス バーのスタイル。 既定値は、フレーム ウィンドウの下部に表示されるステータス バーを作成することを指定します。 [ウィンドウ スタイル] と [CDialogBar::Create] に一覧表示されているステータス バー コントロール スタイルの任意の組み合わせを適用します。 ただし、このパラメーターには常にWS_CHILDスタイルとWS_VISIBLEスタイルを含める必要があります。

nID
ステータス バーの子ウィンドウ ID。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

この関数は、初期フォントも設定し、ステータス バーの高さを既定値に設定します。

埋め込みステータス バー コントロールの作成時に特定のスタイルが存在する必要がある場合は、[作成] の代わりに使用CreateExします。 たとえば、dwCtrlStyle を SBT_TOOLTIPS に設定すると、ステータス バー オブジェクトにツールヒントが表示されます。

CStatusBar::CStatusBar

オブジェクトを CStatusBar 構築し、必要に応じて既定のステータス バー フォントを作成し、フォントの特性を既定値に設定します。

CStatusBar();

CStatusBar::D rawItem

このメンバー関数は、所有者が描画したステータス バーの視覚的な側面が変わると、フレームワークによって呼び出されます。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

パラメーター

lpDrawItemStruct
必要な描画の 種類に関する情報を含む DRAWITEMSTRUCT 構造体へのポインター。

解説

構造体のメンバーは itemActionDRAWITEMSTRUCT 実行する描画アクションを定義します。 所有者描画 CStatusBar オブジェクトの描画を実装するには、このメンバー関数をオーバーライドします。 アプリケーションは、このメンバー関数の終了前に lpDrawItemStruct で指定された表示コンテキスト用に選択されたすべてのグラフィックス デバイス インターフェイス (GDI) オブジェクトを復元する必要があります。

CStatusBar::GetItemID

nIndex で 指定されたインジケーターの ID を返します

UINT GetItemID(int nIndex) const;

パラメーター

Nindex
ID が取得されるインジケーターのインデックス。

戻り値

nIndex指定されたインジケーターの ID。

CStatusBar::GetItemRect

nIndex指定されたインジケーターの座標を lpRect指す構造体にコピーします。

void GetItemRect(
    int nIndex,
    LPRECT lpRect) const;

パラメーター

Nindex
四角形の座標を取得するインジケーターのインデックス。

lpRect
NIndex で指定されたインジケーターの座標を受け取る RECT 構造体または CRect オブジェクトを指します

解説

座標は、ステータス バーの左上隅を基準としたピクセル単位です。

CStatusBar::GetPaneInfo

nIndex で指定された位置にあるインジケーター ウィンドウの ID、スタイル、および幅に、nID、nStyle、cxWidth を設定します

void GetPaneInfo(
    int nIndex,
    UINT& nID,
    UINT& nStyle,
    int& cxWidth) const;

パラメーター

Nindex
情報を取得するペインのインデックス。

nID
ウィンドウの ID に設定されている UINT への参照。

nStyle
ウィンドウのスタイルに設定されている UINT への参照。

cxWidth
ウィンドウの幅に設定されている整数への参照。

CStatusBar::GetPaneStyle

ステータス バーのウィンドウのスタイルを取得するには、このメンバー関数を呼び出します。

UINT GetPaneStyle(int nIndex) const;

パラメーター

Nindex
スタイルを取得するペインのインデックス。

戻り値

nIndex指定されたステータス バー ウィンドウのスタイル。

解説

ペインのスタイルによって、ペインの表示方法が決まります。

ステータス バーで使用できるスタイルの一覧については、「作成」を参照してください

CStatusBar::GetPaneText

このメンバー関数を呼び出して、ステータス バー ウィンドウに表示されるテキストを取得します。

CString GetPaneText(int nIndex) const;  void GetPaneText(int nIndex, CString& rString) const;

パラメーター

Nindex
テキストを取得するペインのインデックス。

rString
取得するテキストを 含む CString オブジェクトへの参照。

戻り値

CStringウィンドウのテキストを含むオブジェクト。

解説

このメンバー関数の 2 番目の形式は、文字列テキストで CString オブジェクトを埋めます。

CStatusBar::GetStatusBarCtrl

このメンバー関数を使用すると、基になる共通コントロールに直接アクセスできます。

CStatusBarCtrl& GetStatusBarCtrl() const;

戻り値

CStatusBarCtrl オブジェクトへの参照を格納します。

解説

Windows ステータス バーの共通コントロールの機能を利用し、ステータス バーのカスタマイズに CStatusBarCtrl が提供するサポートを利用するために使用GetStatusBarCtrlします。 たとえば、共通コントロールを使用して、ステータス バーにサイズ変更グリップを含むスタイルを指定したり、ステータス バーを親ウィンドウのクライアント領域の上部に表示するスタイルを指定したりできます。

一般的なコントロールの詳細については、「Windows SDK の共通コントロール」を参照してください

CStatusBar::SetIndicators

各インジケーターの ID を、配列 lpIDArray の対応する要素で指定された値に設定し、各 ID で指定された文字列リソースを読み込み、インジケーターのテキストを文字列に設定します。

BOOL SetIndicators(
    const UINT* lpIDArray,
    int nIDCount);

パラメーター

lpIDArray
ID の配列へのポインター。

nIDCount
lpIDArray指す配列内の要素の数。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CStatusBar::SetPaneInfo

指定したインジケーター ウィンドウを新しい ID、スタイル、幅に設定します。

void SetPaneInfo(
    int nIndex,
    UINT nID,
    UINT nStyle,
    int cxWidth);

パラメーター

Nindex
スタイルを設定するインジケーター ウィンドウのインデックス。

nID
インジケーター ウィンドウの新しい ID。

nStyle
インジケーター ウィンドウの新しいスタイル。

cxWidth
インジケーター ウィンドウの新しい幅。

解説

次のインジケーター スタイルがサポートされています。

  • SBPS_NOBORDERSウィンドウの周囲に 3-D 罫線がありません。

  • [逆引き] 罫線をSBPS_POPOUTして、テキストが "ポップ アウト" されるようにします。

  • SBPS_DISABLED テキストを描画しません。

  • [Stretch]\(ストレッチ\) ウィンドウをSBPS_STRETCHして、未使用の領域を塗りつぶします。 このスタイルを使用できるのは、ステータス バーごとに 1 つのペインのみです。

  • SBPS_NORMAL ストレッチ、罫線、またはポップアウトなし。

CStatusBar::SetPaneStyle

ステータス バーのウィンドウのスタイルを設定するには、このメンバー関数を呼び出します。

void SetPaneStyle(
    int nIndex,
    UINT nStyle);

パラメーター

Nindex
スタイルを設定するペインのインデックス。

nStyle
スタイルを設定するペインのスタイル。

解説

ペインのスタイルによって、ペインの表示方法が決まります。

ステータス バーで使用できるスタイルの一覧については、「SetPaneInfo」を参照してください

CStatusBar::SetPaneText

このメンバー関数を呼び出して、lpszNewText が 指す文字列にペイン テキストを設定します

BOOL SetPaneText(
    int nIndex,
    LPCTSTR lpszNewText,
    BOOL bUpdate = TRUE);

パラメーター

Nindex
テキストを設定するペインのインデックス。

lpszNewText
新しいペイン テキストへのポインター。

bUpdate
TRUE の場合、テキストが設定された後、ペインは無効になります。

戻り値

正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

呼び出した SetPaneText後、ステータス バーに新しいテキストを表示する UI 更新ハンドラーを追加する必要があります。

//Sets and displays text for pane index 3 and id ID_INDICATOR_SCRL
m_wndStatusBar.SetPaneText(3, _T("My New Status Bar Text"), TRUE);

 

//UI handler in the message map updates the status bar text:
ON_UPDATE_COMMAND_UI(ID_INDICATOR_SCRL, &CMainFrame::OnUpdatePane)

 

void CMainFrame::OnUpdatePane(CCmdUI* pCmdUI)
{
   pCmdUI->Enable();
}

関連項目

MFC サンプル CTRLBARS
MFC サンプル DLGCBR32
CControlBar Class
階層図
CStatusBarCtrl クラス
CControlBar Class