Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата

Но мне нужно отслеживать
  координаты курсора. Для этого я ввожу метод OnKeyDown()


А как это взаимосвязанно ? 

Автор: torero 23.1.2007, 20:46
ON_WM_KEYDOWN я не отслеживал, потому что раньше попадал в метод OnKeyDown
 при нажатии клавиши. Туда, вроде бы, сообщение и посылается.
Нужны мне не только координаты в RichEdit, но и клавиши:стрелки, PgUp, PgDown и другие,
чтобы менять координаты самого RichEdit в окне "вид".

Автор: Earnest 25.1.2007, 09:23
Цитата(torero @  23.1.2007,  21:46 Найти цитируемый пост)
ON_WM_KEYDOWN я не отслеживал, потому что раньше попадал в метод OnKeyDown
 Считай, что это одно и то же.
Сообщение WM_KEYDOWN всегда передается в окно с фокусом, т.е. в рич-эдит. Едиственный способ поймать сообщение в другом месте - перехват. В MFC для этого есть PreTranslateMessage.

Автор: 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.
  Большое спасибо за советы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)