Тема: перехват WM_CHAR в диалог. окне
Создаю диалоговое окно, наследуя от CAdUiBaseDialog, в нем EditControl, каким образом перехватить WM_CHAR, посланные этому EditControl, подскажите, пожалуйста.
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → ObjectARX → перехват WM_CHAR в диалог. окне
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Создаю диалоговое окно, наследуя от CAdUiBaseDialog, в нем EditControl, каким образом перехватить WM_CHAR, посланные этому EditControl, подскажите, пожалуйста.
> ciril
Или вместо CEdit использовать производный класс или субклассировать EditControl и использовать свою функцию обработки очереди сообщений.
Я прошу прощения, можно подробней "вместо CEdit использовать производный класс или субклассировать EditControl".
Можно сделать такой вариант:
1. В класс диалога добавь метод
afx_msg void OnChangeEdit();
2. В список сообщений
BEGIN_MESSAGE_MAP(CMytDlg, CDialog) ON_EN_CHANGE(IDC_EDIT, OnChangeEdit) END_MESSAGE_MAP()
3. Реакция на сообщение
void CMyDlg::OnChangeEdit() { CString str; GetDlgItemText(IDC_EDIT1, str); TRACE(str+"\n"); }
Таким образом ты можеш перехватывать изменения содеримого в поле ввода.
Видимо я неправильно спросил. На ассемб. это просто: в процедуре обработки сообщений на сообщение WM_CHAR вставлен мой код (аналог тезауруса MS Word), в MFC родительское окно просто не получает этого сообщения, а как их перехватывать и подавлять ввод - непонятно. DDX_text в DoDataExchange также позволяет отследить, но не подавить вывод. Мне нужно не просто перехватывать WM_CHAR, при этом заменять вводимые символы.
Спасибо, вопрос снят: SetDlgItemText.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → ObjectARX → перехват WM_CHAR в диалог. окне
Форум работает на PunBB, при поддержке Informer Technologies, Inc