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
ウィンドウ内のスタックに作成されたオブジェクトは自動的に破棄されます。 関数を CStatic
使用 new
してヒープ上にオブジェクトを作成する場合は、オブジェクトを呼び出 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
に SetEnhMetafile
関連付けられている CStatic
拡張メタファイルのハンドルを取得します。
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
以前に設定 SetIcon
した、関連付けられている CStatic
アイコンのハンドルを取得します。
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 種類を含む、多くの場合、グラフィック オブジェクトを静的コントロールとして表示するために使用されるクラスと連携CStatic
CWnd
して使用されます。
CImage
は、デバイスに依存しないビットマップ (DIB) をより簡単に操作できる ATL/MFC クラスです。 詳細については、「CImage
クラス」を参照してください。
- 一般的な使用方法は、または
CImage
オブジェクトの HBITMAP 演算子によって返される GDI オブジェクトをCBitmap
提供CStatic::SetBitmap
することです。 これを行うコードは、次の行のようになります。
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));
次の例では、ヒープ上に 2 つの CStatic
オブジェクトを作成します。 次に、システム ビットマップを使用して 1 つを読み込み、もう 1 つを使用 CBitmap::LoadOEMBitmap
して 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
クラス
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示