Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Ввод текста в CRichEditCtrl |
Автор: GSasha 4.6.2010, 11:39 | ||
Есть такая проблема: Попытка натайпать текст в CRichEditCtrl и при нажатой левой кнопки мыши - в результате приводит к неудаче. Тоесть текст в таком случае не вводиться. Подскажите, с чем связаная эта особенность CRichEditCtrl и как обойти ее. Вот этот вариант проблему решает, но я думаю что есть более правильное решение:
Спасибо |
Автор: GSasha 4.6.2010, 12:20 |
Для ввода текста я использую эмуляцию посимвольного набора текста в RichEdit (вместо SetSel -> ReplaceSel я шлю WM_CHAR). И вот наткнулся на проблему описанную выше, при нажатой левой кнопке мыши моя эмуляция неработает. |
Автор: Albor 4.6.2010, 13:01 |
Если это эмуляция, то можно перегрузить для своего эдита PreTranslateMessage(), где перехватить WM_LBUTTONDOWN и вернуть TRUE, но тогда фокус ввода мышкой не поставишь. |
Автор: GSasha 4.6.2010, 17:11 |
Вариант с PreTranslateMessage() не пройдет, так как RichEdit не будет обрабатывать WM_LBUTTONDOWN совсем. Нужно другой вариант. |
Автор: Albor 4.6.2010, 17:47 | ||
Упс, я вас понял. Можно продумать фильтр. Думаю что реализуемо. По-моему, можно отследить состояние кнопки мыши при приходе WM_CHAR. |
Автор: GSasha 10.6.2010, 17:44 | ||
Имеено этот вариант я и пробовал. Вариант рабочий (см первый пост). Но я не думаю что RichEdit контрол проверяет состояние левой кнопки мыши чтобы обрабатывать WM_CHAR или нет. Непонятна суть этой фичи. |
Автор: Albor 10.6.2010, 18:15 | ||
Я думаю, что при нажатой кнопке мыши, обрабатывается только мышь, поскольку может идти выделение текста и изменять сам текст в это время было бы очень плохо. |