вопрос по VC++ 7. как отобразить выделенный текст в строке состояния?
подскажите, пожалуйста, как отобразить выделенный текст в строке состояния? создаю проект MFC Application, базовый класс указываю CRichEdit. |
RichTextBox-> events-> SelectionChanged (This event is sent when the selection changes) -> StatusBar-> setText
|
сгенерировал я обработчик CRichView::OnEnSelchange() на сообщение EN_SELCHANGE. а как сделать, что бы этот обработчик отображал текст на строке состояния?
в классе CMainFrm существет член m_wndStatusBar типа CStatusBar, он же является строкой состояния, но как к нему подступиться в обработчике CRichView::OnEnSelchange()? |
В примитиве - через родителя CRichView (CMainFrm или кто там это будет) CRichView->(CMyView)parent->wndStatusBar->setText(strWhat)
|
вы имеете в виду через указатель на общего родителя?
|
ThereIsNoName
Да. Но я думаю, что ещё проще вот что: Ведь это родитель CMainFrm (наверняка) получает и обрабатывает OnEnSelchange, случившийся у CRichView? Ну и пусть сразу же спросит у него текст из выделения, а потом выставит в свой wndStatusBar. Ранее же (про общего родителя) я имел в виду немного другой случай: если Вы делаете абстрактный класс CRichView, который неизвестно к какому CMainFrm будет относится (Вы не знаете даже имя класса CMainFrm - CMyMainFrm, CCoolMainFrm и т.д.), то он сам (CRichView) может делать _сам_себе_ обработку своего же OnEnSelchange, а к родителю обращатся (с предварительной проверкой, является ли родитель классом, унаследованным от CMainFrm) как к обычному CMainFrm простым приведением типа. Короче, решений много :) |
Ведь это родитель CMainFrm (наверняка) получает и обрабатывает OnEnSelchange, случившийся у CRichView?
это хорошее решение, но где это посмотреть, что CMainFrm обрабатывает OnEnSelchange? |
Я не совсем понима, в чём проблема-то?
Пример. Делаем mfc-проект, диалоговый. На диалог кладём richedit. Заходим в класс-визард. Там выбираем IDC_RICHEDIT1 и говорим, что будем обрабатывать его EN_CHANGE. На тут же создают: Код:
void CTestDlg::OnChangeRichedit1() Можно отследить, что и где прописывает класс-визард при этом. А именно он делает: Код:
BEGIN_MESSAGE_MAP(CTestDlg, CDialog) Код:
// Generated message map functions |
Время: 07:41. |
Время: 07:41.
© OSzone.net 2001-