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