在创建状态条的代码后,用状态条的成员函数SetPaneInfo来设置每个窗格的ID、风格和宽度(单位似对话框,为1/4英文字母),
其函数原型为
void SetPaneInfo( int nIndex, UINT nID, UINT nStyle, int cxWidth );
其中nStyle可取值:
SBPS_NOBORDERS 窗格周围无三维边框
SBPS_POPOUT 窗格突出显示
SBPS_DISABLED 不画文本
SBPS_STRETCH 伸缩窗格以填满空间(每个状态条中只能有一个窗格可以被设置成伸缩的)
SBPS_NORMAL 不伸缩、无边框、不凸显
还可以用状态条类的另一成员函数SetPaneText在窗格中显示文本信息。
如在CMainFrame::OnCreate函数尾部的return语句之前添加如下代码段:
m_wndStatus丨Bar.SetPaneInfo(0, prompt, S丨BPS_STRETCH,0); // 提示
m_wndStatus丨Bar.SetPaneInfo(1, xName, S丨BPS_NOBORDERS, 8); // "x:"
m_wndStatus丨Bar.SetPaneText(xName, L"x:");
m_wndStatus丨Bar.SetPaneInfo(2, xVal, S丨BPS_NORMAL, 24); // x值
m_wndStatus丨Bar.SetPaneInfo(3, yName, S丨BPS_NOBORDERS, 8); // "y:"
m_wndStatus丨Bar.SetPaneText(yName, L"y:");
m_wndStatus丨Bar.SetPaneInfo(4, yVal, S丨BPS_NORMAL, 24); // y值
在应用程序中(如鼠标移动的消息响应函数OnMouseMove内)用函数SetPaneText动态修改窗格中的文本串。
如
void CStudentView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值 wchar_t buf[20];
CMainFrame *pFrmWnd = (CMainFrame*)GetTopLevelFrame();
_itow_s(point.x, buf, 20, 10); pFrmWnd->m_wndStatus丨Bar.SetPaneText(pFrmWnd->xVal, buf);
_itow_s(point.y, buf, 20, 10);
pFrmWnd->m_wndStatus丨Bar.SetPaneText(pFrmWnd->yVal, buf); CView::OnMouseMove(nFlags, point);
}
可用状态条类的成员函数SetPaneText在状态条中显示提示信息。
例如 m_wndStatus丨Bar.SetPaneText(0, L"Message line for first pane");
其函数原型为 BOOL SetPaneText( int nIndex, LPCTSTR lpszNewText, BOOL bUpdate = TRUE );
其中的nIndex可取不同的值,对应于不同的窗格。