//首先创建一个全局静态数组
static UINT indicators[] =
{
ID_SEPARATOR,
//状态行指示器,如果在table string设置了菜单的标题;
//则光标移动到菜单上会
//自动在左下角状态栏显示设置的标题
1008,1009,//SetPaneText时用到
};
//在资源视图的String Table创建ID任意1008值和1009值(对应上面全局数组);
//状态栏列项的占据长度可以在标题中使用任意字符占位(即在Table String的第三项)
将CStatusBar作为成员变量,在OnCreate消息创建
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndStatusBar.Create(this, CBRS_ALIGN_BOTTOM | WS_CHILD | WS_VISIBLE , ID_VIEW_TOOLBAR))
{
TRACE0("未能创建状态栏\n");
return -1; // 未能创建
}
m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT));
SetTimer(1, 200, NULL);
LoadSettings();
UpdateTitle();
SetTimer(1, 200, NULL);//设置定时器
return 0;
}
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
{
if (m_dlgGoto)
return;
CPoint pt = m_edit.GetCaretPos();//根据编辑控件计算出行列
CString str;
int n = m_edit.CharFromPos(pt);
int nLineIndex = HIWORD(n);
int nCharIndex = LOWORD(n);
int m = m_edit.LineIndex(nLineIndex);
str.Format(_T("第 %d 行 ,第 %d 列"), nLineIndex+1, nCharIndex-m);
m_wndStatusBar.SetPaneText(1, str);
CFrameWnd::OnTimer(nIDEvent);
}
//状态栏开关
void CMainFrame::OnViewStatusBar()
{
BOOL b= m_wndStatusBar.IsWindowVisible();
CFrameWnd::ShowControlBar(&m_wndStatusBar, !b,FALSE);
}