1、CStatusBar在MFC中類繼承關(guān)系:
CObject
CCmdTarget
CWnd
CControlBar
CStatusBar
2、CStatusBar成員函數(shù)介紹:
virtual BOOL Create(CWnd* pParentWnd,DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,UINT nID = AFX_IDW_STATUS_BAR);
函數(shù)用途:創(chuàng)建一個CStatusBar并將其與CStatusBar對象關(guān)聯(lián);
參數(shù)說明:pParentWnd:指向CStatusBar的父窗口(Windows窗口);
dwStyle:CStatusBar的類型,CBRS_TOP:將Bar放在框架的頂部,CBRS_BOTTOM:將其放在框架的底部。CBRS_NOALIGN:當(dāng)父窗口改變時,不重型調(diào)整Bar;
nID:toolbar的子窗口ID;
返回值:成功返回非零,否則返回零;
2、BOOL SetIndicators(const UINT* lpIDArray,int nIDCount);
函數(shù)用途:加載lpIDArray中的ID所對應(yīng)的字符串資源,并將ID所對應(yīng)的文本保存在字符串資源中;
參數(shù)說明:lpIDArray:ID隊列指針
nIDCount:隊列中元素的個數(shù);
返回值:成功返回非零,否則返回零;
3、BOOL SetPaneText(int nIndex,LPCTSTR lpszNewText,BOOL bUpdate = TRUE);
函數(shù)用途:將CStatustBar中的長方塊設(shè)置成lpszNewText所指向的內(nèi)容;
參數(shù)說明:nIndex:長方塊的索引號
lpszNewText:需要加載的內(nèi)容;
bUpdate:等于TRUE時,當(dāng)加載了新的字符內(nèi)容后,將長方塊設(shè)置為無效。無效使得窗口自動刷行,那么新內(nèi)容就被顯示在界面上了。
4、void GetItemRect(int nIndex,LPRECT lpRect) const;
函數(shù)用途:將nIndex所在的位置的矩形坐標(biāo)拷貝到lpRect中。
參數(shù)說明:nIndex:長方塊的標(biāo)識;
lpRect:指向Rect結(jié)構(gòu)的指針,用來保存獲得到的矩形坐標(biāo);
返回值:無
注意:坐標(biāo)是以象素為單位的,原點(diǎn)在左上角。
5、void GetPaneInfo(int nIndex,UINT& nID,UINT& nStyle,int& cxWidth) const;
函數(shù)用途:獲得Pane的相關(guān)信息:ID,Style,寬度。
參數(shù)說明:nIndex:需要獲得的Pane的索引
nID:nIndex所對應(yīng)Pane的ID
nStyle:nIndex對應(yīng)的Pane的類型;
cxWidth:nIndex對應(yīng)的Pane的寬度;
返回值:無
6、void SetPaneInfo(int nIndex,UINT nID,UINT nStyle,int cxWidth);
函數(shù)說明:設(shè)置Pane的相關(guān)信息;
參數(shù)說明:nIndex:需要設(shè)置的Pane的索引;
其余和5相同;
返回值:無
7、void SetPaneStyle(int nIndex,UINT nStyle);
函數(shù)說明:設(shè)置Pane的類型
參數(shù)說明:nIndex:需要設(shè)置的Pane的索引
nStyle:類型;
返回值:無
8、UINT GetPaneStyle(int nIndex) const;
函數(shù)說明:獲得Pane的類型
參數(shù)說明:nIndex:需要獲得的Pane的索引
返回值:無
使用CStatusBar:
1、修改MainFrame中定義的靜態(tài)變量indicators[]中成員為自己定義的ID,這里數(shù)組的下表就是函數(shù)中使用iIndex,
2、創(chuàng)建一個新MFC類,從CStatusBar類繼承,可以在其中增加對CStatusBar的操作函數(shù);
3、將CMainFrame中定義的CStatusBars m_wndStatusBar;改為自己增加類的對象,例如CMyStatusBar m_wndStatusBar;
例子:
1、修改indicators[]如下:
static UINT indicators[] =
{
ID_SEPARATOR, // 狀態(tài)行指示器
ID_INDICATOR_CAPS,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
ID_SEPARATOR,
ID_SEPARATOR,
};
2、創(chuàng)建新類,在其中增加相應(yīng)的處理函數(shù),本例中沒有增加其他的處理函數(shù);
3、對菜單添加CMainFrame命令響應(yīng),函數(shù)如下:
void CMainFrame::OnModifybar()
{
// TODO: 在此添加命令處理程序代碼
m_wndStatusBar.SetPaneText(2,"ab");
}
4、運(yùn)行點(diǎn)擊剛才添加命令響應(yīng)的菜單,查看狀態(tài)條的第三個Pane會顯示“ab”;