共用方式為


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 ,它可以通知其上層按一下滑鼠。

在兩個步驟中建立靜態控制項。 首先,呼叫建構函式來建構 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
指定靜態控制項的控制項識別碼。

傳回值

如果成功則為非零;否則為 0。

備註

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

取得點陣圖的控制碼,先前使用 SetBitmap 設定,且與 CStatic 相關聯。

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

取得資料指標的控制碼,先前使用 SetCursor 設定,且與 CStatic 相關聯。

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 函式 LoadBitmapCBitmap,其中包含一種 GDI 物件,通常用於與 CStatic 合作,這是 CWnd 用來將繪圖物件顯示為靜態控制項的類別。

CImage 是 ATL/MFC 類別,可讓您更輕鬆地使用裝置獨立點陣圖 (DIB)。 如需詳細資訊,請參閱 CImage 類別

  • 一般用法是提供 CStatic::SetBitmapCImage 物件的 HBITMAP 運算子所傳回的 CBitmap GDI 物件。 執行此動作的程式碼類似下列這一行。
MyStaticControl.SetBitmap(HBITMAP(MyBitmap));

下列範例會在堆積上建立兩個 CStatic 物件。 然後,它會使用 以 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