複製鏈接
請複製以下鏈接發送給好友

CStatic

鎖定
CStatic類提供了一個Windows靜態控件的性能。一個靜態控件用來顯示一個文本字符串,框,矩形,圖標,光標,位圖,或增強的圖元文件
外文名
CStatic
特    點
提供了Windows靜態控件的性能
用    途
顯示文本字符串,框,矩形等
構    造
CStatic構造一個CStatic對象

CStatic簡介

CStatic
CWnd
└CStatic
它可以被用來作為標籤,框,或用來分隔其它的控件。一個靜態控件不接收輸入,也不提供輸出;但是,如果它是用SS_NOTIFY風格創建的,則它可以通知其父有關設備點擊的消息。創建一個靜態控件分兩步。首先,調用構造函數來構造此CStatic對象,然後調用Create成員函數來創建此靜態控件並將它與該CStatic對象連接。如果你是在一個對話框中創建了一個靜態控件(通過一個對話框資源),則當用户關閉這個對話框時,此CStatic對象被自動銷燬。如果你是在一個窗口中創建了一個CStatic對象,則必須由你來銷燬它。在一個窗口的堆棧中創建的CStatic對象將自動被銷燬。如果你是使用new函數在堆中創建CStatic對象,則當你使用完後,必須調用delete來銷燬這個CStatic對象。
#include <afxwin.h>
CStatic類成員
構造
CStatic構造一個CStatic對象
初始化
Create創建Windows靜態控件並將它與該CStatic對象連接
SetBitmap指定要在此靜態控件中顯示的位圖GetBitmap獲取先前用SetBitmap設置的位圖的句柄SetIcon指定一個要在此靜態控件中顯示的圖標GetIcon獲取先前用SetIcon設置的圖標的句柄SetCursor指定要顯示在此靜態控件中的光標圖像GetCursor獲取先前用SetCursor設置的光標圖像的句柄SetEnhMetaFile指定要顯示在此靜態控件中的增強的圖元文件GetEnhMetaFile獲取先前用SetEnhMetaFile設置的增強圖元文件的句柄
CStatic::Create
BOOL Create( LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff );
返回值:如果成功則返回非零值;否則返回0;
參數:
lpszText指定要放置在控件中的文本。如果是NULL,則表示沒有文本是可見的。dwStyle指定靜態控件的窗口風格。任何靜態控件風格的組合都可以用於這個控件。rect指定靜態控件的位置和大小。它可以是一個RECT結構或一個CRect對象。pParentWnd指定CStatic父窗口,通常是一個CDialog對象。它不能是NULL。nID指定靜態控件的控件ID。
説明:可以將下列窗口風格用於一個靜態控件:
·WS_CHILD總要使用。·WS_VISIBLE經常使用。·WS_DISABLED很少使用。
如果你準備在此靜態控件中顯示一個位圖,光標,圖標,或圖元文件,你必須使用下列風格之一:
·SS_BITMAP此風格用於位圖。·SS_ICON此風格用於光標和圖標。·SS_ENHMETAFILE此風格用於增強的圖元文件。
對於光標,位圖,或圖標,你也可以使用下面的風格:
·SS_CENTERIMAGE用來使靜態控件中的圖像居中。
請參閲:CStatic::CStatic
CStatic::CStatic
CStatic( );
説明:此成員函數用來構造一個CStatic對象。
請參閲:CStatic::Create
CStatic::GetBitmap
HBITMAP GetBitmap( ) const;
返回值:
返回一個當前位圖的句柄,如果沒有設置位圖,則返回NULL。
説明:
此成員函數用來獲取先前用SetBitmap設置的與CStatic關聯的位圖句柄。
請參閲:
CStatic::SetBitmap, STM_GETIMAGE, Bitmaps
CStatic::GetCursor
HCURSOR GetCursor( );
返回值:
返回一個當前圖標句柄。如果沒有設置圖標則返回NULL。
説明:
此成員函數用來獲取先前用SetCursor設置的與CStatic關聯的光標句柄。
請參閲:
CStatic::SetCursor, STM_GETIMAGE, Cursors
CStatic::GetEnhMetaFile
HENHMETAFILE GetEnhMetaFile( ) const;
返回值:
返回一個當前增強圖元文件句柄。如果沒有設置增強的圖元文件則返回NULL。
説明:
此成員函數用來獲取先前用SetEnhMetaFile設置的與CStatic關聯的增強的圖元文件句柄。
請參閲:
CStatic::SetEnhMetaFile, STM_GETIMAGE
CStatic::GetIcon
HICON GetIcon( ) const;
返回值:
返回一個當前圖標句柄。如果沒有設置增強的圖標則返回NULL。
説明:
此成員函數用來獲取先前用SetIcon設置的與CStatic關聯的圖標句柄。
請參閲:
CStatic::SetIcon, STM_GETICON, Icons
CStatic::SetBitmap
HBITMAP SetBitmap( HBITMAP hBitmap );
返回值:
返回先前與此靜態控件關聯的位圖的句柄。如果沒有與此靜態控件關聯的位圖,則返回NULL。
參數:
hBitmap要繪製在此靜態控件中的位圖句柄。
説明:
此成員函數用來將一個新的位圖與此靜態控件關聯。
這個位圖將被自動繪製在此靜態控件中。缺省的,它將被繪製在左上角,並且此靜態控件將根據位圖的大小來調整尺寸。
你可以使用不同的窗口和靜態控件風格,包括下列值:
·SS_BITMAP此風格總是用於位圖。·SS_CENTERIMAGE用來在此靜態控件中居中。如果圖像比靜態控件大,則它將被剪切掉。如果它比靜態控件小,則圖像周圍的空間將被用位圖左上角的像素的顏色填充。
請參閲:CStatic::GetBitmap, STM_SETIMAGE, Bitmaps
CStatic::SetCursor
HCURSOR SetCursor( HCURSOR hCursor );
返回值:
返回先前與此靜態控件關聯的光標的句柄。如果沒有與此靜態控件關聯的光標,則返回NULL。
參數:
hCursor要繪製在此靜態控件中的光標句柄。
説明:
此成員函數用來將一個新的光標與此靜態控件關聯。
這個光標將被自動繪製在此靜態控件中。缺省的,它將被繪製在左上角,並且此靜態控件將根據光標的大小來調整尺寸。
你可以使用不同的窗口和靜態控件風格,包括下列值:
·SS_ICON此風格總是用於位圖。·SS_CENTERIMAGE用來在此靜態控件中居中。如果圖像比靜態控件大,則它將被剪切掉。如果它比靜態控件小,則圖像周圍的空間將被用位圖左上角的像素顏色填充。
請參閲:CStatic::GetCursor, STM_SETIMAGE, Cursors
CStatic::SetEnhMetaFile
HENHMETAFILE SetEnhMetaFile( HENHMETAFILE hMetaFile );
返回值:
返回先前與此靜態控件關聯的增強圖元文件的句柄。如果沒有與此靜態控件關聯的增強圖元文件,則返回NULL。
參數:
hMetaFile要繪製在此靜態控件中的增強圖元文件句柄。
説明:
此成員函數用來將一個新的增強圖元文件與此靜態控件關聯。
這個增強圖元文件將被自動繪製在此靜態控件中。缺省的,它將被繪製在左上角,並且此靜態控件將根據增強圖元文件的大小來調整尺寸。
你可以使用不同的窗口和靜態控件風格,包括下列值:
·SS_ENHMETAFILE此風格總是用於位圖。
請參閲:CStatic::GetEnhMetaFile, STM_SETIMAGE
CStatic::SetIcon
HICON SetIcon( HICON hIcon );
返回值:
返回先前與此靜態控件關聯的圖標的句柄。如果沒有與此靜態控件關聯的圖標,則返回NULL。
參數:
hIcon要繪製在此靜態控件中的圖標句柄。
説明:
此成員函數用來將一個新的圖標與此靜態控件關聯。
這個圖標將被自動繪製在此靜態控件中。缺省的,它將被繪製在左上角,並且此靜態控件將根據圖標的大小來調整尺寸。
你可以使用不同的窗口和靜態控件風格,包括下列值:
·SS_ICON此風格總是用於圖標。·SS_CENTERIMAGE用來在此靜態控件中居中。如果圖像比靜態控件大,則它將被剪切掉。如果它比靜態控件小,則圖像周圍的空間將被用位圖左上角的像素顏色填充。
請參閲:CStatic::GetIcon, STM_SETICON, Icons

CStatic基本使用

CStatic 繼承於 CWnd,是一種特殊的窗體。他可以顯示文本字符串(這也是最常用的用法)、圖標、指針(cursor)、位圖和增強圖文元件. 通常靜態控件不提供輸入和輸出。但是如果把他的屬性設置為 SS_NOTIFY,他可以通知其父窗口的擊鼠標事件。

CStatic顯示文本

如果文本不變,可以直接設置其 Caption。如果想在運行過程中改變其顯示文本,可以用如下方式:
CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
pStatic->SetWindowText("Just a Test of Static Control!");

CStatic顯示圖標

如果要顯示圖標,則必須要設置窗口屬性為 SS_ICON 和 SS_CENTERIMAGE,實例代碼如下:
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
LONG style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);style |= SS_ICON;
style |= SS_CENTERIMAGE;
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);
pStatic->SetIcon(m_hIcon);

CStatic顯示指針

如果要顯示 cursor,則必須要設置窗口屬性為 SS_ICON 和 SS_CENTERIMAGE,實例代碼如下:
CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC);
LONG style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= SS_ICON; style |= SS_CENTERIMAGE; SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);

CStatic顯示位圖

如果要顯示圖標,則必須要設置窗口屬性為 SS_BITMAP 和 SS_CENTERIMAGE,實例代碼如下:
//獲得指向靜態控件指針 CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC);
//獲得位圖句柄 HBITMAP hBitmap=::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_BITMAP2));
//LONG result = SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE,style);
//設置靜態控件的樣式,使其可以使用位圖,並試位標顯示使居中 pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//設置靜態控件顯示位圖 pStatic->SetBitmap(hBitmap);