Отображение позиции
курсора в Status Bar
Автор: Edward Duffy.
Во многих приложениях, в которых используются
классы CEditView и CRichEditView , оногда бывает необходимо,
чтобы пользователь знал местоположение курсора,
как это сделано во многих текстовых редакторах.
Добавьте ячейку в таблицу строк(string table)
ID_INDICATOR_CURPOS и описание "Ln %d, Col %d ".
Дополнительные пробелы сделают возможным
отображение позиции курсора, если его значения
перевалят за 100. Добавьте ID_INDICATOR_CURPOS в Ваш массив
индикаторов (indicators[] array) в файле MainFrm.cpp. В карте
сообщений, в файле объявлений для класса CMainFrame,
добавьте следующее объявление функции:
afx_msg void OnUpdateCurPosIndicator(CCmdUI *pCmdUI);
- Теперь в фактической карте сообщений, в файле
MainFrm.cpp добавьте следующий макро-вызов:
ON_UPDATE_COMMAND_UI(ID_INDICATOR_CURPOS,
OnUpdateCurPosIndicator)
- И в заключении, создайте функцию в файле MainFrm.cpp
void CMainFrame::OnUpdateCurPosIndicator(CCmdUI *pCmdUI)
{
CString strCurPos;
int nLineNum, nColNum;
int nSelStart, nSelEnd;
m_wndEditCtrl->GetSel(nSelStart, nSelEnd);
nLineNum = m_wndEditCtrl->LineFromChar(nSelStart);
nColNum = nSelStart - m_wndEditCtrl->LineIndex(nLineNum);
strCurPos.Format(ID_INDICATOR_CURPOS,
nLineNum+1,
nColNum+1);
m_wndStatusBar.SetPaneText(
m_wndStatusBar.CommandToIndex(ID_INDICATOR_CURPOS),
strCurPos);
}
Downloads
Скачать демонстрашку - 38 Kb
Скачать исходник - 2 Kb
|