| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Не работает метод OnKeyDown |
| Автор: torero 22.1.2007, 19:22 |
| Я на окно "вид" ( от CScrollView) накладываю окошко RichEdit для редактирования текста. Передаю в RichEdit фокус ввода и всё пока нормально. Но мне нужно отслеживать координаты курсора. Для этого я ввожу метод OnKeyDown() , но программа в него не попадает, видимо потому, что окно "вид" не имеет фокуса ввода. Как же быть в такой ситуации: вводить символы в RichEdit и определять их координаты? |
| Автор: Kostt 23.1.2007, 13:24 |
| событие ON_WM_KEYDOWN отслеживаешь? |
| Автор: Nastya 23.1.2007, 14:23 | ||
А как это взаимосвязанно ? |
| Автор: torero 23.1.2007, 20:46 |
| ON_WM_KEYDOWN я не отслеживал, потому что раньше попадал в метод OnKeyDown при нажатии клавиши. Туда, вроде бы, сообщение и посылается. Нужны мне не только координаты в RichEdit, но и клавиши:стрелки, PgUp, PgDown и другие, чтобы менять координаты самого RichEdit в окне "вид". |
| Автор: threef 25.1.2007, 10:36 |
| Попробуй получить уведомление EN_CHANGE и получишь координаты каретки(не курсора !) при помощи редактор->GetCaretPos() |
| Автор: torero 26.1.2007, 21:13 |
| С методом PreTranslateMessage получилось сразу. Как то я не заметил этод метод. А сообщение EN_CHANGE не проходит. Вот если "вид" сделан на основе CRichEditView, то тогда всё работает. Но всё оказалось просто. Я поставил : CPoint point; point=m_rich.GetCaretPos(); в тот же метод PreTranslateMessage и получаются координаты каретки в системе координат RichEdit. Большое спасибо за советы. |