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 して、処理が完了したときに破棄する必要があります。

継承階層

CObject

CCmdTarget

CWnd

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を呼び出すだけでなく、ビットマップ イメージを使用する必要がある場合に使用できます。 CBitmapGDI オブジェクトの 1 種類を含む、多くの場合、グラフィック オブジェクトを静的コントロールとして表示するために使用されるクラスと連携CStaticCWndして使用されます。

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 クラス