CStatic

CStatic

CStatic是開放靜態文件,為開源庫提供穩定、快速的免費CDN服務。

簡介


CStatic
CObject└CCmdTarget└CWnd└CStatic
CStatic類提供了一個Windows靜態控制項的性能。一個靜態控制項用來顯示一個文本字元串,框,矩形,圖標,游標,點陣圖,或增強的圖元文件。它可以被用來作為標籤,框,或用來分隔其它的控制項。一個靜態控制項不接收輸入,也不提供輸出;但是,如果它是用SS_NOTIFY風格創建的,則它可以通知其父有關設備點擊的消息。創建一個靜態控制項分兩步。首先,調用構造函數來構造此CStatic對象,然後調用Create成員函數來創建此靜態控制項並將它與該CStatic對象連接。如果你是在一個對話框中創建了一個靜態控制項(通過一個對話框資源),則當用戶關閉這個對話框時,此CStatic對象被自動銷毀。如果你是在一個窗口中創建了一個CStatic對象,則必須由你來銷毀它。在一個窗口的堆棧中創建的CStatic對象將自動被銷毀。如果你是使用new函數在堆中創建CStatic對象,則當你使用完后,必須調用delete來銷毀這個CStatic對象。
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

如果要顯示 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);
pStatic->SetCursor(OnQueryDragIcon());

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);