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 て、そのオブジェクトを破棄した後に破棄する必要があります。

継承階層

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

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