提供 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 運算符所傳回的CBitmapGDI 物件。 執行此動作的程式代碼類似下列這一行。
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 類