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」を参照してください。
継承階層
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 の CreateWindowEx の dwExStyle パラメーターを参照してください。
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"));