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 の「 Common Controls 」を参照してください。
フレームワークは、左端のインジケーターが位置 0 の配列にインジケーター情報を格納します。 ステータス バーを作成するときは、フレームワークが対応するインジケーターに関連付ける文字列 ID の配列を使用します。 その後、文字列 ID またはインデックスを使用してインジケーターにアクセスできます。
既定では、最初のインジケーターは "エラスティック" です。他のインジケーター ウィンドウでは使用されていないステータス バーの長さが使用されるため、他のペインは右揃えになります。
ステータス バーを作成するには、次の手順に従います。
CStatusBar
オブジェクトを構築します。Create (または CreateEx) 関数を呼び出して、ステータス バー ウィンドウを作成し、
CStatusBar
オブジェクトにアタッチします。SetIndicators を呼び出して、各インジケーターに文字列 ID を関連付けます。
ステータス バー ウィンドウでテキストを更新するには、次の 3 つの方法があります。
CWnd::SetWindowText を呼び出して、ペイン 0 内のテキストのみを更新します。
ステータス バーのON_UPDATE_COMMAND_UI ハンドラーで CCmdUI::SetText を呼び出します。
SetPaneText を呼び出して、任意のペインのテキストを更新します。
SetPaneStyle を呼び出して、ステータス バー ウィンドウのスタイルを更新します。
CStatusBar
の使用方法の詳細については、「MFC でのStatus Bar の実装およびテクニカル ノート 31: コントロール バー」を参照してください。
継承階層
CStatusBar
要件
Header: 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 stylesに加えて、これらのスタイルがサポートされています。
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 の Settingsを参照してください。
dwStyle
ステータス バーのスタイル。 既定値は、フレーム ウィンドウの下部に表示されるステータス バーを作成することを指定します。 Window スタイルと CDialogBar::Create に一覧表示されているステータス バー コントロール スタイルの任意の組み合わせを適用します。 ただし、このパラメーターには常にWS_CHILDスタイルとWS_VISIBLEスタイルを含める必要があります。
nID
ステータス バーの子ウィンドウ ID。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
この関数は、初期フォントも設定し、ステータス バーの高さを既定値に設定します。
埋め込みステータス バー コントロールの作成時に特定のスタイルが存在する必要がある場合は、Create の代わりに、CreateEx
を使用します。 たとえば、 dwCtrlStyle をSBT_TOOLTIPSに設定して、ステータス バー オブジェクトにヒントを表示します。
CStatusBar::CStatusBar
CStatusBar
オブジェクトを作成し、必要に応じて既定のステータス バー フォントを作成し、フォントの特性を既定値に設定します。
CStatusBar();
CStatusBar::D rawItem
このメンバー関数は、所有者が描画したステータス バーの視覚的な側面が変わると、フレームワークによって呼び出されます。
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
パラメーター
lpDrawItemStruct
必要な描画の種類に関する情報を含む DRAWITEMSTRUCT 構造体へのポインター。
解説
DRAWITEMSTRUCT
構造体のitemAction
メンバーは、実行する描画アクションを定義します。 このメンバー関数をオーバーライドして、所有者描画 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
RECT構造体またはCRect オブジェクトを指します。このオブジェクトは、nIndex で指定されたインジケーターの座標を受け取ります。
解説
座標は、ステータス バーの左上隅を基準としたピクセル単位です。
CStatusBar::GetPaneInfo
nID、nStyle、および cxWidth を、nIndex で指定された位置にあるインジケーター ウィンドウの ID、スタイル、および幅に設定します。
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 で指定されたステータス バー ウィンドウのスタイル。
解説
ペインのスタイルによって、ペインの表示方法が決まります。
ステータス バーで使用できるスタイルの一覧については、「 Create」を参照してください。
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 オブジェクトへの参照を格納します。
解説
GetStatusBarCtrl
を使用して、Windows ステータス バーの共通コントロールの機能を利用し、ステータス バーのカスタマイズCStatusBarCtrl サポートを利用します。 たとえば、共通コントロールを使用して、ステータス バーにサイズ変更グリップを含むスタイルを指定したり、ステータス バーを親ウィンドウのクライアント領域の上部に表示するスタイルを指定したりできます。
一般的なコントロールの詳細については、Windows SDK の「 Common コントロール 」を参照してください。
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