MFC控件 狀態條的簡單介紹及使用 CStatusBar

 1、CStatusBar在MFC中類繼承關係:
CObject
  CCmdTarget
    CWnd
      CControlBar
        CStatusBar

2、CStatusBar成員函數介紹:
virtual BOOL Create(
   CWnd* pParentWnd,
   DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,
   UINT nID = AFX_IDW_STATUS_BAR
);

函數用途:創建一個CStatusBar並將其與CStatusBar對象關聯;
參數說明:pParentWnd:指向CStatusBar的父窗口(Windows窗口);
          dwStyle:CStatusBar的類型,CBRS_TOP:將Bar放在框架的頂部,CBRS_BOTTOM:將其放在框架的底部。CBRS_NOALIGN:當父窗口改變時,不重型調整Bar;
   nID:toolbar的子窗口ID;
返回值:成功返回非零,否則返回零;

2、BOOL SetIndicators(
   const UINT* lpIDArray,
   int nIDCount
);

函數用途:加載lpIDArray中的ID所對應的字符串資源,並將ID所對應的文本保存在字符串資源中;
參數說明:lpIDArray:ID隊列指針
          nIDCount:隊列中元素的個數;
返回值:成功返回非零,否則返回零;

3、BOOL SetPaneText(
   int nIndex,
   LPCTSTR lpszNewText,
   BOOL bUpdate = TRUE
);
函數用途:將CStatustBar中的長方塊設置成lpszNewText所指向的內容;
參數說明:nIndex:長方塊的索引號
   lpszNewText:需要加載的內容;
   bUpdate:等於TRUE時,當加載了新的字符內容後,將長方塊設置爲無效。無效使得窗口自動刷行,那麼新內容就被顯示在界面上了。

4、void GetItemRect(
   int nIndex,
   LPRECT lpRect
) const;
函數用途:將nIndex所在的位置的矩形座標拷貝到lpRect中。
參數說明:nIndex:長方塊的標識;
   lpRect:指向Rect結構的指針,用來保存獲得到的矩形座標;
返回值:無
注意:座標是以象素爲單位的,原點在左上角。

5、void GetPaneInfo(
   int nIndex,
   UINT& nID,
   UINT& nStyle,
   int& cxWidth
) const;
函數用途:獲得Pane的相關信息:ID,Style,寬度。
參數說明:nIndex:需要獲得的Pane的索引
   nID:nIndex所對應Pane的ID
   nStyle:nIndex對應的Pane的類型;
   cxWidth:nIndex對應的Pane的寬度;
返回值:無

6、void SetPaneInfo(
   int nIndex,
   UINT nID,
   UINT nStyle,
   int cxWidth
);
函數說明:設置Pane的相關信息;
參數說明:nIndex:需要設置的Pane的索引;
   其餘和5相同;
返回值:無

7、void SetPaneStyle(
   int nIndex,
   UINT nStyle
);
函數說明:設置Pane的類型
參數說明:nIndex:需要設置的Pane的索引
   nStyle:類型;
返回值:無

8、UINT GetPaneStyle(
   int nIndex
) const;
函數說明:獲得Pane的類型
參數說明:nIndex:需要獲得的Pane的索引
返回值:無

 

使用CStatusBar:
1、修改MainFrame中定義的靜態變量indicators[]中成員爲自己定義的ID,這裏數組的下表就是函數中使用iIndex,
2、創建一個新MFC類,從CStatusBar類繼承,可以在其中增加對CStatusBar的操作函數;
3、將CMainFrame中定義的CStatusBars  m_wndStatusBar;改爲自己增加類的對象,例如CMyStatusBar m_wndStatusBar;

例子:
1、修改indicators[]如下:
static UINT indicators[] =
{
 ID_SEPARATOR,           // 狀態行指示器 
 ID_INDICATOR_CAPS,
 ID_INDICATOR_NUM,
 ID_INDICATOR_SCRL,
 ID_SEPARATOR,
 ID_SEPARATOR,
};
2、創建新類,在其中增加相應的處理函數,本例中沒有增加其他的處理函數;
3、對菜單添加CMainFrame命令響應,函數如下:
void CMainFrame::OnModifybar()
{
 // TODO: 在此添加命令處理程序代碼
 m_wndStatusBar.SetPaneText(2,"ab"); 
}
4、運行點擊剛纔添加命令響應的菜單,查看狀態條的第三個Pane會顯示“ab”;

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