Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » вопрос по VC++ 7. как отобразить выделенный текст в строке состояния?

Ответить
Настройки темы
вопрос по VC++ 7. как отобразить выделенный текст в строке состояния?

Аватара для ThereIsNoName

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать



подскажите, пожалуйста, как отобразить выделенный текст в строке состояния?

создаю проект MFC Application, базовый класс указываю CRichEdit.


Отправлено: 20:27, 24-01-2005

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


RichTextBox-> events-> SelectionChanged (This event is sent when the selection changes) -> StatusBar-> setText

Отправлено: 09:13, 25-01-2005 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ThereIsNoName

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


сгенерировал я обработчик CRichView::OnEnSelchange() на сообщение EN_SELCHANGE. а как сделать, что бы этот обработчик отображал текст на строке состояния?



в классе CMainFrm существет член m_wndStatusBar типа CStatusBar, он же является строкой состояния, но как к нему подступиться в обработчике CRichView::OnEnSelchange()?


Отправлено: 11:23, 25-01-2005 | #3


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


В примитиве - через родителя CRichView (CMainFrm или кто там это будет) CRichView->(CMyView)parent->wndStatusBar->setText(strWhat)

Отправлено: 13:08, 25-01-2005 | #4


Аватара для ThereIsNoName

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


вы имеете в виду через указатель на общего родителя?

Отправлено: 08:34, 26-01-2005 | #5


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


ThereIsNoName
Да. Но я думаю, что ещё проще вот что: Ведь это родитель CMainFrm (наверняка) получает и обрабатывает OnEnSelchange, случившийся у CRichView? Ну и пусть сразу же спросит у него текст из выделения, а потом выставит в свой wndStatusBar.

Ранее же (про общего родителя) я имел в виду немного другой случай: если Вы делаете абстрактный класс CRichView, который неизвестно к какому CMainFrm будет относится (Вы не знаете даже имя класса CMainFrm - CMyMainFrm, CCoolMainFrm и т.д.), то он сам (CRichView) может делать _сам_себе_ обработку своего же OnEnSelchange, а к родителю обращатся (с предварительной проверкой, является ли родитель классом, унаследованным от CMainFrm) как к обычному CMainFrm простым приведением типа.

Короче, решений много

Отправлено: 09:06, 26-01-2005 | #6


Аватара для ThereIsNoName

Новый участник


Сообщения: 10
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ведь это родитель CMainFrm (наверняка) получает и обрабатывает OnEnSelchange, случившийся у CRichView?

это хорошее решение, но где это посмотреть, что CMainFrm обрабатывает OnEnSelchange?

Отправлено: 13:21, 26-01-2005 | #7


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Я не совсем понима, в чём проблема-то?

Пример. Делаем mfc-проект, диалоговый. На диалог кладём richedit. Заходим в класс-визард. Там выбираем IDC_RICHEDIT1 и говорим, что будем обрабатывать его EN_CHANGE. На тут же создают:
Код: Выделить весь код
void CTestDlg::OnChangeRichedit1() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}
Пишите там, что угодно.

Можно отследить, что и где прописывает класс-визард при этом.

А именно он делает:
Код: Выделить весь код
BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
	//{{AFX_MSG_MAP(CTestDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_EN_CHANGE(IDC_RICHEDIT1, OnChangeRichedit1)    <------------ в имплементейшене
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
и
Код: Выделить весь код
	// Generated message map functions
	//{{AFX_MSG(CTestDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	afx_msg void OnChangeRichedit1();         <------------ в хидере
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
Что не понятно?

Отправлено: 14:20, 26-01-2005 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » вопрос по VC++ 7. как отобразить выделенный текст в строке состояния?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Заменить текст в строке внутри символов <> FlatX007 AutoIt 2 03-09-2009 22:14
Прочее - Как настроить выделенный инет на два компа? sergant138 Сетевые технологии 11 01-09-2009 13:28
Как отобразить картинку по ссылке не в IE? Twix1124 AutoIt 1 30-05-2009 11:59
MySQL - MYSQL - как отобразить текст с переносами? alexa___ Программирование и базы данных 2 11-03-2009 14:06
Вопрос по командной строке Homer_xxl Microsoft Windows 95/98/Me (архив) 6 02-04-2007 14:10




 
Переход