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);
使用Visual C++ 6.0編制軟件時,靜態控件是最常用的控件之一。一般情況下,靜態控件用作那些沒有固定標題文本屬性的控件(如文本編輯控件、列表框等)的標籤,或者用來爲控件分組,或者用來顯示一些提示性的文件。實際上,靜態控件除了顯示靜態文本這一基本功能外,還有許多其他的特殊功能,如在靜態控件中可以顯示圖標、位圖,甚至還可以在靜態控件中顯示動畫。本文將通過示例程序來介紹靜態控件的這些特殊用法。
1. 顯示圖標
⑴ 使用AppWizard創建一個基於對話框的MFC應用程序,設置其工程名爲ShowIco。
⑵ 在對話框上增加一個靜態控件。需要注意的是,有資源管理器添加的靜態控件在默認情況下其ID均爲IDC_STATIC,因此,如果需要在程序中區分和操縱各個不同的靜態控件,一般情況下,需要更改新添加的靜態控件的ID值。這裏將靜態控件的ID值設置爲IDC_SHOWICO。
⑶ 在資源管理器中添加圖標資源,其ID爲IDI_ICON1。
⑷ 使用ClassWizard添加WM_INITDIALOG消息處理函數OnInitDialog。
⑸ 在OnInitDialog函數中下面的代碼:
//獲得指向靜態控件的指針
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWICO);
//加載圖標
HICON hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);
//設置靜態控件的樣式,使其可以使用圖標,並試圖標顯示使居中
pStatic->ModifyStyle(0xF,SS_ICON|SS_CENTERIMAGE);
//設置靜態控件圖標
pStatic->SetIcon(hIcon);
運行該程序,顯示如上圖。
2.顯示位圖
⑴ 使用AppWizard創建一個基於對話框的MFC應用程序,設置其工程名爲ShowBmp。
⑵ 在對話框上增加一個靜態控件,將靜態控件的ID值設置爲IDC_SHOWBMP。
⑶ 在資源管理其中添加位圖資源,其ID爲IDB_INFO。
⑷ 使用ClassWizard添加WM_INITDIALOG消息處理函數OnInitDialog。
⑸ 在OnInitDialog函數中下面的代碼:
//獲得指向靜態控件的指針
CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP);
//獲得位圖句柄
HBITMAP Bitmap=::LoadBitmap(AfxGetApp()_hInstance,
MAKINTRESOURCE(IDB_INFO));
//設置靜態控件的樣式,使其可以使用位圖,並試位標顯示使居中
pStatic->ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE);
//設置靜態控件顯示位圖
pStatic->SetBitmap(hBitmap);
運行該程序即可。
3. 顯示動畫
編寫一個字符串在靜態控件中不停的移動的程序。
⑴ 使用AppWizard創建一個基於對話框的MFC應用程序,設置其工程名爲ShowAnimation。
⑵ 在對話框上增加一個靜態控件。將靜態控件的ID值設置爲IDC_PREVIEW。
⑶ 使用ClassWizard添加WM_INITDIALOG消息處理函數OnInitDialog和WM_TIMER的消息處理函數OnTimer。
⑷ 在CshowAnimationDlg類中,增加兩個變量m_x和m_y,用以表示字符串的座標。
⑸ 在OnInitDialog函數中添加下列代碼:
m_x=0;
m_y=0;
KillTimer(1);
VERIFY(SetTimer(1, 500, NULL) != 0);
1. 在CshowAnimationDlg類中,增加一個成員函數Draw()如下:
void CshowAnimationDlg::Draw()
{
CWnd *pWnd=GetDlgItem(IDC_PREVIEW);
CDC *pDC=pWnd->GetDC();
本文來自http://tech.16c.cn/c/VC/2010012819557.html, 感謝原作者,(*^__^*) 嘻嘻……