次の方法で共有


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
静的コントロールの位置とサイズを指定します。 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を呼び出すよりもビットマップ イメージを使用する必要がある場合に使用できます。 CBitmapGDI オブジェクトの 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 クラス