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
,以在完成時終結該物件。
繼承階層架構
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 函式LoadBitmap
。CBitmap
,其中包含一種 GDI 物件,通常用於與CStatic
合作,這是CWnd
用來將圖形對象顯示為靜態控件的類別。
CImage
是ATL/MFC類別,可讓您更輕鬆地使用裝置獨立點陣圖 (DIB)。 如需詳細資訊,請參閱 CImage
類別。
- 一般用法是提供
CStatic::SetBitmap
或CImage
物件的 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
類