Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает метод OnKeyDown 
V
    Опции темы
torero
Дата 22.1.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



    Я на окно "вид" ( от CScrollView) накладываю окошко RichEdit для редактирования текста. 
  Передаю в RichEdit фокус ввода и всё пока нормально. Но мне нужно отслеживать
  координаты курсора. Для этого я ввожу метод OnKeyDown() , но программа в него 
  не попадает, видимо потому, что окно "вид" не имеет фокуса ввода.
  Как же быть в такой ситуации: вводить символы в RichEdit и определять их координаты?
PM MAIL   Вверх
Kostt
Дата 23.1.2007, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 8.1.2006
Где: Томск

Репутация: 2
Всего: 3



событие ON_WM_KEYDOWN отслеживаешь?
PM MAIL   Вверх
Nastya
Дата 23.1.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 1
Всего: 44



Цитата

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


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


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
torero
Дата 23.1.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



ON_WM_KEYDOWN я не отслеживал, потому что раньше попадал в метод OnKeyDown
 при нажатии клавиши. Туда, вроде бы, сообщение и посылается.
Нужны мне не только координаты в RichEdit, но и клавиши:стрелки, PgUp, PgDown и другие,
чтобы менять координаты самого RichEdit в окне "вид".
PM MAIL   Вверх
Earnest
Дата 25.1.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 87
Всего: 183



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



--------------------
...
PM   Вверх
threef
Дата 25.1.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: 1
Всего: 10



Попробуй получить уведомление EN_CHANGE и получишь координаты каретки(не курсора !) при помощи    редактор->GetCaretPos()
PM MAIL   Вверх
torero
Дата 26.1.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 177
Регистрация: 1.2.2006

Репутация: нет
Всего: нет



     С методом PreTranslateMessage получилось сразу. Как то я не заметил этод метод.
  А сообщение EN_CHANGE не проходит. Вот если "вид" сделан на основе CRichEditView,
  то тогда всё работает. Но всё оказалось просто. Я поставил :
          CPoint point;
          point=m_rich.GetCaretPos();
  в тот же метод PreTranslateMessage и получаются координаты каретки в системе
  координат RichEdit.
  Большое спасибо за советы.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.