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
静的コントロールの位置とサイズを指定します。 構造体また CRect
はオブジェクトの RECT
いずれかを指定できます。
pParentWnd
CStatic
親ウィンドウを指定します。通常 CDialog
はオブジェクトです。 にする NULL
ことはできません。
nID
スタティックコントロールのコントロール ID を指定します。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
2つの手順でオブジェクトを CStatic
構築します。 まず、コンストラクター CStatic
を呼び出し、を呼び出し Create
ます。これにより、Windows の静的コントロールが作成され、オブジェクトに CStatic
アタッチされます。
次の ウィンドウスタイル を静的コントロールに適用します。
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
には、1種類の GDI オブジェクトが含まれています。これは、とCStatic
の連携でよく使用されます。これは、グラフィックオブジェクトを静的コントロールとして表示するために使用されるクラスですCWnd
。
CImage
は、デバイスに依存しないビットマップ (DIB) をより簡単に操作できる ATL/MFC クラスです。 詳細については、「クラス」を参照してくださいCImage
。
- 一般的な使用方法として、オブジェクトまたは
CImage
オブジェクトのCBitmap
HBITMAP 演算子によって返される GDI オブジェクトを指定CStatic::SetBitmap
します。 これを行うコードは、次の行のようになります。
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));
次の例では、ヒープ上に2つ CStatic
のオブジェクトを作成します。 次に、を使用 CImage::Load
してシステムビットマップ CBitmap::LoadOEMBitmap
を読み込み、もう1つを使用してファイルから読み込みます。
例
// 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
クラス