(一)狀態條控制的主要功能
狀態條控制(Status Bar Control)比較容易理解,使用起來也比較簡單。狀態條是位於父窗口底部的一個水平子窗口,它可以被分成多個顯示信息的小區域。其MFC中封裝的CstatusBarCtrl控制類提供了應用的基本方法。
(二)狀態條控制的對象結構
1、狀態條控制的建立方法
CStatusBarCtrl &StatusBarCtrl 建立狀態條控制對象結構
Create 建立狀態條控制對象並綁定
狀態條控制類CstatusBarCtrl::Create的調用格式如下:
BOOL Create( DWord dwStyle,const RECT& rect,CWnd* pParentWnd,UINT nID);
其中參數dwStyle用來確定狀態條的控制風格;參數rect用來確定狀態條窗口的大小和位置;參數pParentWnd用來確定狀態條父窗口的指針;nID用來確定狀態條控制的標識符。
狀態條控制風格可以是下列值的組合:CCS_BOTTOM、CCS_NODIVIDER、CCS_NOHILITE、CCS_NOMOVEY、CCS_NOPARENTALIGN、CCS_NORESIZE和CCS_TOP等,具體內容和含義請見工具條控制中的有關部分。
2、狀態條控制的類屬性
狀態條控制類屬性包括設置給定部分顯示文本SetText、取得給定部分的文本GetText、設置狀態條區域劃分數及其每部分的右邊坐標SetParts、取得狀態條區域劃分數量GetParts、取得狀態條的水平和垂直寬度GetBorders和取得狀態條矩形區域GetRect。
(三)狀態條控制的應用技巧
狀態條控制除可以顯示一定的幫助和提示信息外,還可以實現響應鼠標輸入等功能。這裡以在狀態條上顯示鼠標移動坐標為例,具體說明其應用技巧。
利用應用程序向導生成的程序代碼中,狀態條作為主窗口的子窗口,其具有一個AFX_IDW_STATUS _BAR標識符,通過它調用函數GetDescendantWindow()和AfxGetMainWnd(),就可以取得狀態條窗口的指針。由於基於文檔的應用程序在建立時就具有狀態條區域,所以只要利用類向導簡單地加入鼠標移動消息處理功能函數和下述函數代碼,就可以實現這一功能:
Void CTestVIEw::OnMouseMove(UINT nFlags,Cpoint point)
{
CclIEntDC dc(this);//建立設備文本
OnPrepareDC(&dc,NULL);//設備映射處理
dc.DPtoLP(&point);//鼠標指針轉換
char text[128];
CstatusBar *pStatus=(CstatusBar *)AfxGetApp()->m_pMainWnd->
GetDescendanWindow(AFX_IDW_STATUS_BAR);//取得窗口指針
If(pStatus){//如果存在顯示鼠標坐標
Sprintf(text,”X坐標=%4d,Y坐標=%4d”,point.x,point.y);
pStatus->SetPaneText(0,text);}
CscrollVIEw::OnMouseMove(nFlags,point);
}