次の方法で共有


CStatusBarCtrl クラス

Windows コモン ステータス バー コントロール の機能が用意されています。

構文

class CStatusBarCtrl : public CWnd

メンバー

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

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

パブリック メソッド

名前 説明
CStatusBarCtrl::Create ステータス バー コントロールを作成し、 CStatusBarCtrl オブジェクトにアタッチします。
CStatusBarCtrl::CreateEx 指定した Windows 拡張スタイルを使用してステータス バー コントロールを作成し、 CStatusBarCtrl オブジェクトにアタッチします。
CStatusBarCtrl::D rawItem 所有者描画ステータス バー コントロールの視覚的な側面が変更されたときに呼び出されます。
CStatusBarCtrl::GetBorders ステータス バー コントロールの水平方向と垂直方向の境界線の現在の幅を取得します。
CStatusBarCtrl::GetIcon 現在のステータス バー コントロールのパーツ (ウィンドウとも呼ばれます) のアイコンを取得します。
CStatusBarCtrl::GetParts ステータス バー コントロール内のパーツの数を取得します。
CStatusBarCtrl::GetRect ステータス バー コントロール内のパーツの外接する四角形を取得します。
CStatusBarCtrl::GetText ステータス バー コントロールの指定された部分からテキストを取得します。
CStatusBarCtrl::GetTextLength ステータス バー コントロールの特定の部分からテキストの長さを文字数で取得します。
CStatusBarCtrl::GetTipText ステータス バーのペインのヒント テキストを取得します。
CStatusBarCtrl::IsSimple ステータス ウィンドウ コントロールをチェックして、単純モードであるかどうかを判断します。
CStatusBarCtrl::SetBkColor ステータス バーの背景色を設定します。
CStatusBarCtrl::SetIcon ステータス バーのペインのアイコンを設定します。
CStatusBarCtrl::SetMinHeight ステータス バー コントロールの描画領域の最小高さを設定します。
CStatusBarCtrl::SetParts ステータス バー コントロール内のパーツの数と、各パーツの右端の座標を設定します。
CStatusBarCtrl::SetSimple ステータス バー コントロールが単純なテキストを表示するか、以前の SetParts呼び出しによって設定されたすべてのコントロール パーツを表示するかを指定します。
CStatusBarCtrl::SetText ステータス バー コントロールの特定の部分にテキストを設定します。
CStatusBarCtrl::SetTipText ステータス バーのペインのヒント テキストを設定します。

解説

"ステータス バー コントロール" は水平ウィンドウであり、通常は親ウィンドウの下部に表示され、アプリケーションでさまざまな種類の状態情報を表示できます。 ステータス バー コントロールをパーツに分割して、複数の種類の情報を表示できます。

このコントロール (したがって、 CStatusBarCtrl クラス) は、Windows 95/98 および Windows NT バージョン 3.51 以降で実行されているプログラムでのみ使用できます。

CStatusBarCtrlの使用方法の詳細については、「Controls および Using CStatusBarCtrl」を参照してください。

継承階層

CObject

CCmdTarget

CWnd

CStatusBarCtrl

要件

ヘッダー: afxcmn.h

CStatusBarCtrl::Create

ステータス バー コントロールを作成し、 CStatusBarCtrl オブジェクトにアタッチします。

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwStyle
ステータス バー コントロールのスタイルを指定します。 Windows SDK の Common コントロール スタイル に一覧表示されているステータス バー コントロール スタイルの任意の組み合わせを適用します。 このパラメーターには、WS_CHILD スタイルを含める必要があります。 また、WS_VISIBLE スタイルも含める必要があります。

rect
ステータス バー コントロールのサイズと位置を指定します。 CRect オブジェクトまたは RECT 構造体のいずれかを指定できます。

pParentWnd
ステータス バー コントロールの親ウィンドウ (通常は CDialog) を指定します。 NULL は指定できません。

nID
ステータス バー コントロールの ID を指定します。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

2 つの手順で CStatusBarCtrl を構築します。 まず、コンストラクターを呼び出してから、 Createを呼び出します。これにより、ステータス バー コントロールが作成され、 CStatusBarCtrl オブジェクトにアタッチされます。

ステータス ウィンドウの既定の位置は親ウィンドウの下部にありますが、CCS_TOP スタイルを指定して、親ウィンドウのクライアント領域の上部に表示することができます。 状態 ウィンドウの右端にサイズ変更グリップを含めるには、SBARS_SIZEGRIP スタイルを指定できます。 CCS_TOPスタイルとSBARS_SIZEGRIPスタイルを組み合わせることは推奨されません。これは、システムがステータス ウィンドウに描画しても、結果のサイズ変更グリップが機能しないためです。

拡張ウィンドウ スタイルのステータス バーを作成するには、Createの代わりに CStatusBarCtrl::CreateEx を呼び出します。

VERIFY(m_wndSBC.Create(WS_CHILD | WS_VISIBLE | CCS_BOTTOM | SBARS_SIZEGRIP,
                       CRect(0, 0, 0, 0), this, IDC_STATUSBARCTRL));

CStatusBarCtrl::CreateEx

コントロール (子ウィンドウ) を作成し、 CStatusBarCtrl オブジェクトに関連付けます。

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

パラメーター

dwExStyle
作成するコントロールの拡張スタイルを指定します。 拡張 Windows スタイルの一覧については、Windows SDK の CreateWindowExdwExStyle パラメーターを参照してください。

dwStyle
ステータス バー コントロールのスタイルを指定します。 Windows SDK の Common コントロール スタイル に一覧表示されているステータス バー コントロール スタイルの任意の組み合わせを適用します。 このパラメーターには、WS_CHILD スタイルを含める必要があります。 また、WS_VISIBLE スタイルも含める必要があります。

rect
作成するウィンドウのサイズと位置を記述する RECT 構造体への参照 ( pParentWnd のクライアント座標)。

pParentWnd
コントロールの親であるウィンドウへのポインター。

nID
コントロールの子ウィンドウ ID。

戻り値

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

解説

Create の代わりにCreateExを使用して、Windows 拡張スタイルの前書きWS_EX_で指定された拡張 Windows スタイルを適用します。

CStatusBarCtrl::CStatusBarCtrl

CStatusBarCtrl オブジェクトを構築します。

CStatusBarCtrl();

CStatusBarCtrl::D rawItem

所有者描画ステータス バー コントロールの視覚的な側面が変更されたときにフレームワークによって呼び出されます。

virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);

パラメーター

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

解説

DRAWITEMSTRUCT構造体のitemAction メンバーは、実行する描画アクションを定義します。

既定では、このメンバー関数は何も行いません。 このメンバー関数をオーバーライドして、所有者描画 CStatusBarCtrl オブジェクトの描画を実装します。

アプリケーションは、このメンバー関数が終了する前に、 lpDrawItemStruct で指定された表示コンテキストに対して選択されているすべてのグラフィックス デバイス インターフェイス (GDI) オブジェクトを復元する必要があります。

CStatusBarCtrl::GetBorders

水平方向と垂直方向の境界線と四角形間のスペースのステータス バー コントロールの現在の幅を取得します。

BOOL GetBorders(int* pBorders) const;

BOOL GetBorders(
    int& nHorz,
    int& nVert,
    int& nSpacing) const;

パラメーター

pBorders
3 つの要素を持つ整数配列のアドレス。 最初の要素は水平境界線の幅を受け取り、2 番目の要素は垂直境界線の幅を受け取り、3 番目の要素は四角形間の境界線の幅を受け取ります。

nHorz
水平方向の境界線の幅を受け取る整数への参照。

nVert
垂直境界線の幅を受け取る整数への参照。

nSpacing
四角形間の境界線の幅を受け取る整数への参照。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

これらの罫線は、コントロールの外側の端と、テキストを含むコントロール内の四角形の間の間隔を決定します。

RECT rectPane1;
VERIFY(m_wndSBC.GetRect(1, &rectPane1));

int borderArray[3];
VERIFY(m_wndSBC.GetBorders(borderArray));

int nHorz, nVert, nSpacing;
VERIFY(m_wndSBC.GetBorders(nHorz, nVert, nSpacing));

CStatusBarCtrl::GetIcon

現在のステータス バー コントロールのパーツ (ウィンドウとも呼ばれます) のアイコンを取得します。

HICON GetIcon(int iPart) const;

パラメーター

iPart
[in]取得するアイコンを含むパーツの 0 から始まるインデックス。 このパラメーターが -1 の場合、ステータス バーは単純モードのステータス バーと見なされます。

戻り値

メソッドが成功した場合のアイコンへのハンドル。それ以外の場合は NULL。

解説

このメソッドは、Windows SDK で説明されている SB_GETICON メッセージを送信します。

ステータス バー コントロールは、テキスト出力ペインの行 (パーツとも呼ばれます) で構成されます。 ステータス バーの詳細については、「MFC でのStatus Bar の実装および CStatusBarCtrl オブジェクトのモードの設定を参照してください。

最初のコード例では、現在のステータス バー コントロールにアクセスするために使用される変数 ( m_statusBar) を定義します。 この変数は次の例で使用されています。

public:
CStatusBarCtrl m_statusBar;

次のコード例では、現在のステータス バー コントロールの 2 つのペインにアイコンをコピーします。 コード例の前のセクションでは、3 つのペインを含むステータス バー コントロールを作成し、最初のウィンドウにアイコンを追加しました。 次の使用例は、最初のウィンドウからアイコンを取得し、2 番目と 3 番目のウィンドウにアイコンを追加します。

// Get the icon from pane 1 and set it in panes 2 and 3.
HICON hIcon = m_statusBar.GetIcon(0);
m_statusBar.SetIcon(1, hIcon);
m_statusBar.SetIcon(2, hIcon);

CStatusBarCtrl::GetParts

ステータス バー コントロール内のパーツの数を取得します。

int GetParts(
    int nParts,
    int* pParts) const;

パラメーター

nParts
座標を取得する部分の数。 このパラメーターがコントロール内のパーツ数を超える場合、メッセージは既存のパーツのみの座標を取得します。

pParts
nParts で指定された部分の数と同じ数の要素を持つ整数配列のアドレス。 配列内の各要素は、対応する部分の右端のクライアント座標を受け取ります。 要素が - 1 に設定されている場合、そのパーツの右端の位置はステータス バーの右端まで拡張されます。

戻り値

成功した場合はコントロール内の部分の数。それ以外の場合は 0。

解説

このメンバー関数は、指定された部品数の右端の座標も取得します。

int pParts[2];

int nParts = m_wndSBC.GetParts(2, pParts);

CStatusBarCtrl::GetRect

ステータス バー コントロール内のパーツの外接する四角形を取得します。

BOOL GetRect(
    int nPane,
    LPRECT lpRect) const;

パラメーター

nPane
外接する四角形を取得するパーツの 0 から始まるインデックス。

lpRect
外接する四角形を受け取る RECT 構造体のアドレス。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

CRect rectPane1;

VERIFY(m_wndSBC.GetRect(1, &rectPane1));

CStatusBarCtrl::GetText

ステータス バー コントロールの指定された部分からテキストを取得します。

CString GetText(
    int nPane,
    int* pType = NULL) const;

int GetText(
    LPCTSTR lpszText,
    int nPane,
    int* pType = NULL) const;

パラメーター

lpszText
テキストを受け取るバッファーのアドレス。 このパラメーターは null で終わる文字列です。

nPane
テキストの取得元となるパーツの 0 から始まるインデックス。

pType
型情報を受け取る整数へのポインター。 型には、次のいずれかの値を指定できます。

  • 0 テキストは、ステータス バーの平面よりも低く表示される罫線で描画されます。

  • SBT_NOBORDERS テキストは罫線なしで描画されます。

  • SBT_POPOUT テキストは、ステータス バーの平面よりも高く表示される罫線で描画されます。

  • SBT_OWNERDRAWテキストの描画の種類がSBT_OWNERDRAWの場合、 pType はこのメッセージを受け取り、長さと操作の種類ではなく、テキストに関連付けられている 32 ビット値を返します。

戻り値

現在のテキストを含むテキストまたは CString の長さ (文字数)。

int nType;
TCHAR *pszPaneOneText;

pszPaneOneText = new TCHAR[m_wndSBC.GetTextLength(1, &nType) + 1];
int nTextLength = m_wndSBC.GetText(pszPaneOneText, 1, &nType);

switch (nType)
{
case 0:
   // Text is drawn with a border to appear lower than the
   // plane of the status bar
   break;
case SBT_NOBORDERS:
   // text is drawn without borders
   break;
case SBT_OWNERDRAW:
   // Text is drawn by the parent window
   break;
case SBT_POPOUT:
   // Text is drawn with a border to appear higher than the
   // plane of the status bar
   break;
}

delete pszPaneOneText;

CStatusBarCtrl::GetTextLength

ステータス バー コントロールの特定の部分からテキストの長さを文字数で取得します。

int GetTextLength(
    int nPane,
    int* pType = NULL) const;

パラメーター

nPane
テキストの取得元となるパーツの 0 から始まるインデックス。

pType
型情報を受け取る整数へのポインター。 型には、次のいずれかの値を指定できます。

  • 0 テキストは、ステータス バーの平面よりも低く表示される罫線で描画されます。

  • SBT_NOBORDERS テキストは罫線なしで描画されます。

  • SBT_OWNERDRAW テキストは親ウィンドウによって描画されます。

  • SBT_POPOUT テキストは、ステータス バーの平面よりも高く表示される罫線で描画されます。

戻り値

テキストの長さ (文字数)。

int nType;
int nLength = m_wndSBC.GetTextLength(0, &nType);

switch (nType)
{
case 0:
   // Text is drawn with a border to appear lower than the
   // plane of the status bar
   break;
case SBT_NOBORDERS:
   // text is drawn without borders
   break;
case SBT_OWNERDRAW:
   // Text is drawn by the parent window
   break;
case SBT_POPOUT:
   // Text is drawn with a border to appear higher than the
   // plane of the status bar
   break;
}

CStatusBarCtrl::GetTipText

ステータス バーのペインのヒント テキストを取得します。

CString GetTipText(int nPane) const;

パラメーター

nPane
ツールヒント テキストを受け取るステータス バー ウィンドウの 0 から始まるインデックス。

戻り値

ツールヒントで使用するテキストを含む CString オブジェクト。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ SB_GETTIPTEXTの動作を実装します。

CString csPane0TipText = m_wndSBC.GetTipText(0);

CStatusBarCtrl::IsSimple

ステータス ウィンドウ コントロールをチェックして、単純モードであるかどうかを判断します。

BOOL IsSimple() const;

戻り値

ステータス ウィンドウ コントロールが単純モードの場合は 0 以外。それ以外の場合は 0。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ SB_ISSIMPLEの動作を実装します。

CStatusBarCtrl::SetBkColor

ステータス バーの背景色を設定します。

COLORREF SetBkColor(COLORREF cr);

パラメーター

cr
新しい背景色を指定する COLORREF 値。 ステータス バーが既定の背景色を使用するように、CLR_DEFAULT値を指定します。

戻り値

前の既定の背景色を表す COLORREF 値。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ SB_SETBKCOLORの動作を実装します。

m_wndSBC.SetBkColor(RGB(0, 0, 250));

HICON hIcon = AfxGetApp()->LoadIcon(IDI_PANE_0_ICON);
VERIFY(hIcon);
VERIFY(m_wndSBC.SetIcon(0, hIcon));

CStatusBarCtrl::SetIcon

ステータス バーのペインのアイコンを設定します。

BOOL SetIcon(
    int nPane,
    HICON hIcon);

パラメーター

nPane
アイコンを受け取るペインの 0 から始まるインデックス。 このパラメーターが -1 の場合、ステータス バーは単純なステータス バーと見なされます。

hIcon
設定するアイコンへのハンドル。 この値が NULL の場合、アイコンはパーツから削除されます。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ SB_SETICONの動作を実装します。

CStatusBarCtrl::SetBkColor の例を参照してください。

CStatusBarCtrl::SetMinHeight

ステータス バー コントロールの描画領域の最小高さを設定します。

void SetMinHeight(int nMin);

パラメーター

nMin
コントロールの最小高さ (ピクセル単位)。

解説

最小の高さは、 nMin とステータス バー コントロールの垂直方向の境界線の 2 倍の幅 (ピクセル単位) の合計です。

m_wndSBC.SetMinHeight(40);

CStatusBarCtrl::SetParts

ステータス バー コントロール内のパーツの数と、各パーツの右端の座標を設定します。

BOOL SetParts(
    int nParts,
    int* pWidths);

パラメーター

nParts
設定するパーツの数。 部品数は 255 を超えることはできません。

pWidths
nParts で指定された部分と同じ数の要素を持つ整数配列のアドレス。 配列内の各要素は、対応する部分の右端の位置をクライアント座標で指定します。 要素が - 1 の場合、そのパーツの右端の位置はコントロールの右端まで拡張されます。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

const int c_nParts = 4;
CRect rect;

m_wndSBC.GetClientRect(&rect);
int aWidths[c_nParts] = {rect.right - 300, rect.right - 200, rect.right - 100,
                         -1};

VERIFY(m_wndSBC.SetParts(c_nParts, aWidths));

CStatusBarCtrl::SetSimple

ステータス バー コントロールに単純なテキストを表示するか、以前の SetParts の呼び出しによって設定されたすべてのコントロール パーツを表示するかを指定します。

BOOL SetSimple(BOOL bSimple = TRUE);

パラメーター

bSimple
[in]Display-type フラグ。 このパラメーターが TRUE の場合、コントロールには単純なテキストが表示されます。FALSE の場合は、複数の部分が表示されます。

戻り値

常に 0 を返します。

解説

アプリケーションでステータス バー コントロールを単純ではないコントロールから単純に変更した場合、またはその逆の場合、システムは直ちにコントロールを再描画します。

CStatusBarCtrl::SetText

ステータス バー コントロールの特定の部分にテキストを設定します。

BOOL SetText(
    LPCTSTR lpszText,
    int nPane,
    int nType);

パラメーター

lpszText
設定されるテキストを指定する null で終わる文字列のアドレス。 nTypeがSBT_OWNERDRAWの場合、lpszText は 32 ビットのデータを表します。

nPane
設定される部分の 0 から始まるインデックス。 この値が 255 の場合、ステータス バー コントロールは 1 つの部分のみで構成される単純なコントロールと見なされます。

nType
描画操作の種類。 使用可能な値 SB_SETTEXT一覧については メッセージを参照してください。

戻り値

成功した場合は 0 以外を返します。それ以外の場合は 0 を返します。

解説

メッセージによって、変更されたコントロールの部分が無効になり、コントロールが次に WM_PAINT メッセージを受信したときに新しいテキストが表示されます。

VERIFY(m_wndSBC.SetText(_T("Text For Pane 1"), 1, 0));

CStatusBarCtrl::SetTipText

ステータス バーのペインのヒント テキストを設定します。

void SetTipText(
    int nPane,
    LPCTSTR pszTipText);

パラメーター

nPane
ツールヒント テキストを受け取るステータス バー ウィンドウの 0 から始まるインデックス。

pszTipText
ヒント テキストを含む文字列へのポインター。

解説

このメンバー関数は、Windows SDK で説明されているように、Win32 メッセージ SB_SETTIPTEXTの動作を実装します。

m_wndSBC.SetTipText(0, _T("This is Pane 0"));

関連項目

CWnd クラス
階層図
CToolBarCtrl クラス