CStatic 的用法

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, 感謝原作者,(*^__^*) 嘻嘻……

發佈了38 篇原創文章 · 獲贊 6 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章