CStatic
クラス
Windows のスタティック コントロールの機能が用意されています。
構文
class CStatic : public CWnd
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
CStatic::CStatic |
CStatic オブジェクトを構築します。 |
パブリック メソッド
名前 | 説明 |
---|---|
CStatic::Create |
Windows 静的コントロールを作成し、 CStatic オブジェクトにアタッチします。 |
CStatic::DrawItem |
所有者描画の静的コントロールを描画する場合にオーバーライドします。 |
CStatic::GetBitmap |
SetBitmap で以前に設定したビットマップのハンドルを取得します。 |
CStatic::GetCursor |
SetCursor で以前に設定したカーソル イメージのハンドルを取得します。 |
CStatic::GetEnhMetaFile |
SetEnhMetaFile で以前に設定した拡張メタファイルのハンドルを取得します。 |
CStatic::GetIcon |
SetIcon で以前に設定したアイコンのハンドルを取得します。 |
CStatic::SetBitmap |
静的コントロールに表示するビットマップを指定します。 |
CStatic::SetCursor |
静的コントロールに表示するカーソル イメージを指定します。 |
CStatic::SetEnhMetaFile |
静的コントロールに表示する拡張メタファイルを指定します。 |
CStatic::SetIcon |
静的コントロールに表示するアイコンを指定します。 |
解説
静的コントロールには、テキスト文字列、ボックス、四角形、アイコン、カーソル、ビットマップ、または拡張メタファイルが表示されます。 他のコントロールのラベル付け、ボックス付け、または分離に使用できます。 静的コントロールは通常、入力を受け取り、出力を提供しません。ただし、 SS_NOTIFY
スタイルで作成された場合は、マウスクリックを親に通知できます。
2 つの手順で静的コントロールを作成します。 まず、コンストラクターを呼び出して CStatic
オブジェクトを構築し、次に Create
メンバー関数を呼び出して静的コントロールを作成し、 CStatic
オブジェクトにアタッチします。
ダイアログ ボックス内に (ダイアログ リソースを使用して) CStatic
オブジェクトを作成すると、ユーザーがダイアログ ボックスを閉じると、 CStatic
オブジェクトが自動的に破棄されます。
ウィンドウ内に CStatic
オブジェクトを作成する場合は、破棄が必要になる場合もあります。 ウィンドウ内のスタックに作成された CStatic
オブジェクトは自動的に破棄されます。 new
関数を使用してヒープ上にCStatic
オブジェクトを作成する場合は、オブジェクトのdelete
を呼び出して、処理が完了したときに破棄する必要があります。
継承階層
CStatic
要件
ヘッダー: afxwin.h
CStatic::Create
Windows 静的コントロールを作成し、 CStatic
オブジェクトにアタッチします。
virtual BOOL Create(
LPCTSTR lpszText,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID = 0xffff);
パラメーター
lpszText
コントロールに配置するテキストを指定します。 NULL
場合、テキストは表示されません。
dwStyle
静的コントロールのウィンドウ スタイルを指定します。 静的コントロール スタイルの任意の組み合わせをコントロールに適用します。
rect
静的コントロールの位置とサイズを指定します。 RECT
構造体またはCRect
オブジェクトのいずれかを指定できます。
pParentWnd
CStatic
親ウィンドウ (通常はCDialog
オブジェクト) を指定します。 NULL
することはできません。
nID
静的コントロールのコントロール ID を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
2 つの手順で CStatic
オブジェクトを構築します。 まず、コンストラクター CStatic
を呼び出し、 Create
を呼び出します。これにより、Windows 静的コントロールが作成され、 CStatic
オブジェクトにアタッチされます。
静的コントロールに次の window スタイル を適用します。
WS_CHILD
いつもWS_VISIBLE
通常はWS_DISABLED
稀に
静的コントロールにビットマップ、カーソル、アイコン、またはメタファイルを表示する場合は、次のいずれかの 静的スタイルを適用する必要があります。
SS_BITMAP
ビットマップにはこのスタイルを使用します。SS_ICON
このスタイルは、カーソルとアイコンに使用します。SS_ENHMETAFILE
拡張メタファイルには、このスタイルを使用します。
カーソル、ビットマップ、またはアイコンの場合は、次のスタイルを使用することもできます。
SS_CENTERIMAGE
静的コントロール内のイメージを中央に配置するために使用します。
例
// This code can be placed in OnInitDialog
CStatic myStatic;
// Create a child static control that centers its text horizontally.
myStatic.Create(_T("my static"), WS_CHILD | WS_VISIBLE | SS_CENTER,
CRect(10, 10, 150, 50), pParentWnd);
CStatic::CStatic
CStatic
オブジェクトを構築します。
CStatic();
例
// Create a static object on the stack.
CStatic myStatic;
// Create a static object on the heap.
CStatic *pmyStatic = new CStatic;
CStatic::DrawItem
所有者が描画した静的コントロールを描画するためにフレームワークによって呼び出されます。
virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
パラメーター
lpDrawItemStruct
DRAWITEMSTRUCT
構造体へのポインター。 この構造体には、描画する項目と必要な描画の種類に関する情報が含まれています。
解説
所有者描画 CStatic
オブジェクトの描画を実装するには、この関数をオーバーライドします (コントロールにはスタイル SS_OWNERDRAW
があります)。
CStatic::GetBitmap
CStatic
に関連付けられているビットマップのハンドルを取得します。このハンドルは、以前に SetBitmap
で設定されています。
HBITMAP GetBitmap() const;
戻り値
現在のビットマップへのハンドル。ビットマップが設定されていない場合は NULL
。
例
// Code such as this could be placed in the OnInitDialog callback.
// It creates two bitmap static controls on the heap, using members
// _m_pCStatic_A and _m_pCStatic_B to identify them so that they can
// be destroyed when no longer needed.
CBitmap CBmp;
CImage CImg;
// Create a child bitmap static control and load it from a CBitmap object.
_m_pCStatic_A = new CStatic;
_m_pCStatic_A->Create(_T("A bitmap static control (A)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(16,16,64,64),
pParentWnd);
CBmp.LoadOEMBitmap(OBM_CLOSE); // Loads one of the default Windows bitmaps
_m_pCStatic_A->SetBitmap( HBITMAP(CBmp) );
_m_pCStatic_A->ShowWindow( SW_SHOW );
// Create a child bitmap static control and load it from a CImage object.
_m_pCStatic_B = new CStatic;
_m_pCStatic_B->Create(_T("A bitmap static control (B)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(90,16,138,64),
pParentWnd);
CImg.Load( _T("test.png") );
if( _m_pCStatic_B->GetBitmap( ) == NULL )
_m_pCStatic_B->SetBitmap( HBITMAP(CImg) );
/* Then, later:
delete( _m_pCStatic_A );
delete( _m_pCStatic_B );
*/
CStatic::GetCursor
CStatic
に関連付けられているカーソルのハンドルを取得します(以前はSetCursor
で設定されています)。
HCURSOR GetCursor();
戻り値
現在のカーソルへのハンドル。カーソルが設定されていない場合は NULL
。
例
CStatic myStatic;
// Create a child icon static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
pParentWnd);
// If no image is defined for the static control, define the image
// to the system arrow and question mark cursor.
if (myStatic.GetCursor() == NULL)
myStatic.SetCursor(::LoadCursor(NULL, IDC_HELP));
CStatic::GetEnhMetaFile
CStatic
に関連付けられている拡張メタファイルのハンドルを取得します(以前はSetEnhMetafile
で設定されています)。
HENHMETAFILE GetEnhMetaFile() const;
戻り値
現在の拡張メタファイルへのハンドル。拡張メタファイルが設定されていない場合は NULL
。
例
CStatic myStatic;
// Create a child enhanced metafile static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ENHMETAFILE | SS_CENTERIMAGE,
CRect(10, 10, 150, 50), pParentWnd);
// If no image is defined for the static control, define the image
// to be "myemf.emf."
if (myStatic.GetEnhMetaFile() == NULL)
myStatic.SetEnhMetaFile(::GetEnhMetaFile(_T("myemf.emf")));
CStatic::GetIcon
CStatic
に関連付けられているアイコンのハンドルを取得します(以前はSetIcon
で設定されています)。
HICON GetIcon() const;
戻り値
現在のアイコンへのハンドル。アイコンが設定されていない場合は NULL
。
例
CStatic myStatic;
// Create a child icon static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
pParentWnd);
// If no icon is defined for the static control, define the icon
// to the system error icon.
if (myStatic.GetIcon() == NULL)
myStatic.SetIcon(::LoadIcon(NULL, IDI_ERROR));
CStatic::SetBitmap
新しいビットマップを静的コントロールに関連付けます。
HBITMAP SetBitmap(HBITMAP hBitmap);
パラメーター
hBitmap
静的コントロールに描画されるビットマップのハンドル。
戻り値
以前に静的コントロールに関連付けられたビットマップのハンドル。ビットマップが静的コントロールに関連付けられていない場合は NULL
。
解説
ビットマップは、静的コントロールに自動的に描画されます。 既定では、左上隅に描画され、静的コントロールのサイズがビットマップのサイズに変更されます。
次のようなさまざまなウィンドウ および静的コントロール スタイルを使用できます。
SS_BITMAP
ビットマップには常にこのスタイルを使用します。SS_CENTERIMAGE
静的コントロール内のイメージを中央に配置するために使用します。 イメージが静的コントロールよりも大きい場合は、クリップされます。 静的コントロールよりも小さい場合、イメージの周囲の空の領域は、ビットマップの左上隅にあるピクセルの色によって塗りつぶされます。MFC にはクラス
CBitmap
が用意されています。これは、単に Win32 関数LoadBitmap
を呼び出すよりもビットマップ イメージを使用する必要がある場合に使用できます。CBitmap
GDI オブジェクトの 1 種類を含む、多くの場合、グラフィック オブジェクトを静的コントロールとして表示するために使用されるCWnd
クラスであるCStatic
と連携して使用されます。
CImage
は、デバイスに依存しないビットマップ (DIB) をより簡単に操作できる ATL/MFC クラスです。 詳細については、「CImage
クラス」を参照してください。
- 一般的な使用方法は、
CBitmap
またはCImage
オブジェクトの HBITMAP 演算子によって返される GDI オブジェクトをCStatic::SetBitmap
することです。 これを行うコードは、次の行のようになります。
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));
次の例では、ヒープ上に 2 つの CStatic
オブジェクトを作成します。 次に、 CBitmap::LoadOEMBitmap
を使用してシステム ビットマップを使用して 1 つを読み込み、もう 1 つは CImage::Load
を使用してファイルから読み込みます。
例
// Code such as this could be placed in the OnInitDialog callback.
// It creates two bitmap static controls on the heap, using members
// _m_pCStatic_A and _m_pCStatic_B to identify them so that they can
// be destroyed when no longer needed.
CBitmap CBmp;
CImage CImg;
// Create a child bitmap static control and load it from a CBitmap object.
_m_pCStatic_A = new CStatic;
_m_pCStatic_A->Create(_T("A bitmap static control (A)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(16,16,64,64),
pParentWnd);
CBmp.LoadOEMBitmap(OBM_CLOSE); // Loads one of the default Windows bitmaps
_m_pCStatic_A->SetBitmap( HBITMAP(CBmp) );
_m_pCStatic_A->ShowWindow( SW_SHOW );
// Create a child bitmap static control and load it from a CImage object.
_m_pCStatic_B = new CStatic;
_m_pCStatic_B->Create(_T("A bitmap static control (B)"),
WS_CHILD|WS_BORDER|WS_VISIBLE|SS_BITMAP|SS_CENTERIMAGE, CRect(90,16,138,64),
pParentWnd);
CImg.Load( _T("test.png") );
if( _m_pCStatic_B->GetBitmap( ) == NULL )
_m_pCStatic_B->SetBitmap( HBITMAP(CImg) );
/* Then, later:
delete( _m_pCStatic_A );
delete( _m_pCStatic_B );
*/
CStatic::SetCursor
新しいカーソル イメージを静的コントロールに関連付けます。
HCURSOR SetCursor(HCURSOR hCursor);
パラメーター
hCursor
静的コントロールに描画されるカーソルのハンドル。
戻り値
以前に静的コントロールに関連付けられたカーソルのハンドル。カーソルが静的コントロールに関連付けられていない場合は NULL
。
解説
カーソルは静的コントロールに自動的に描画されます。 既定では、左上隅に描画され、静的コントロールのサイズがカーソルのサイズに変更されます。
次のようなさまざまなウィンドウ および静的コントロール スタイルを使用できます。
SS_ICON
このスタイルは、カーソルとアイコンに常に使用します。SS_CENTERIMAGE
静的コントロールの中央揃えに使用します。 イメージが静的コントロールよりも大きい場合は、クリップされます。 静的コントロールよりも小さい場合は、イメージの周囲の空の領域に静的コントロールの背景色が塗りつぶされます。
例
CStatic myStatic;
// Create a child icon static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
pParentWnd);
// If no image is defined for the static control, define the image
// to the system arrow and question mark cursor.
if (myStatic.GetCursor() == NULL)
myStatic.SetCursor(::LoadCursor(NULL, IDC_HELP));
CStatic::SetEnhMetaFile
新しい拡張メタファイル イメージを静的コントロールに関連付けます。
HENHMETAFILE SetEnhMetaFile(HENHMETAFILE hMetaFile);
パラメーター
hMetaFile
静的コントロールに描画される拡張メタファイルのハンドル。
戻り値
以前に静的コントロールに関連付けられた拡張メタファイルのハンドル。拡張メタファイルが静的コントロールに関連付けられていない場合は NULL
。
解説
拡張メタファイルは、静的コントロールに自動的に描画されます。 拡張メタファイルは、静的コントロールのサイズに合わせてスケーリングされます。
次のようなさまざまなウィンドウ および静的コントロール スタイルを使用できます。
SS_ENHMETAFILE
拡張メタファイルには、常にこのスタイルを使用します。
例
CStatic myStatic;
// Create a child enhanced metafile static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ENHMETAFILE | SS_CENTERIMAGE,
CRect(10, 10, 150, 50), pParentWnd);
// If no image is defined for the static control, define the image
// to be "myemf.emf."
if (myStatic.GetEnhMetaFile() == NULL)
myStatic.SetEnhMetaFile(::GetEnhMetaFile(_T("myemf.emf")));
CStatic::SetIcon
新しいアイコン イメージを静的コントロールに関連付けます。
HICON SetIcon(HICON hIcon);
パラメーター
hIcon
静的コントロールに描画されるアイコンのハンドル。
戻り値
以前に静的コントロールに関連付けられたアイコンのハンドル。アイコンが静的コントロールに関連付けられていない場合は NULL
。
解説
アイコンは、静的コントロールに自動的に描画されます。 既定では、左上隅に描画され、静的コントロールのサイズがアイコンのサイズに変更されます。
次のようなさまざまなウィンドウ および静的コントロール スタイルを使用できます。
SS_ICON
このスタイルは、カーソルとアイコンに常に使用します。SS_CENTERIMAGE
静的コントロールの中央揃えに使用します。 イメージが静的コントロールよりも大きい場合は、クリップされます。 静的コントロールよりも小さい場合は、イメージの周囲の空の領域に静的コントロールの背景色が塗りつぶされます。
例
CStatic myStatic;
// Create a child icon static control.
myStatic.Create(_T("my static"),
WS_CHILD | WS_VISIBLE | SS_ICON | SS_CENTERIMAGE, CRect(10, 10, 150, 50),
pParentWnd);
// If no icon is defined for the static control, define the icon
// to the system error icon.
if (myStatic.GetIcon() == NULL)
myStatic.SetIcon(::LoadIcon(NULL, IDI_ERROR));
関連項目
CWnd
クラス
階層図
CWnd
クラス
CButton
クラス
CComboBox
クラス
CEdit
クラス
CListBox
クラス
CScrollBar
クラス
CDialog
クラス