Есть ли код уведомления при изменении положения курсора в Edit Control MFC? - PullRequest
2 голосов
/ 19 сентября 2019

Отправляется ли код уведомления при изменении положения курсора в MFC управления редактированием?Я хочу отобразить позицию курсора (символа) для пользователя

1 Ответ

5 голосов
/ 19 сентября 2019

Нет уведомления EN_..., отправляемого самим элементом управления Edit при изменении положения каретки.

Однако вы можете использовать SetWinEventHook() для регистрациидля EVENT_OBJECT_LOCATIONCHANGE уведомлений для идентификатора процесса вашего приложения и идентификатора потока пользовательского интерфейса.

EVENT_OBJECT_LOCATIONCHANGE
0x800B

Объект изменил местоположение, форму илиразмер.Система отправляет это событие для следующих элементов пользовательского интерфейса: caret и объектов окна.Серверные приложения отправляют это событие для своих доступных объектов.

Затем вы можете настроить функцию обратного вызова для фильтрации уведомлений, проверив, является ли предоставленный hwnd вашим элементом управления Edit, а предоставленный idObject - * 1025.*OBJID_CARET.

OBJID_CARET

Панель вставки текста (каретка) в окне.

При обнаружении вы можете получитьфактическая позиция каретки, отправив сообщение EM_GETSEL в элемент управления Edit.

Получает начальную и конечную позиции символов (в TCHAR) текущего выделения в элементе управления редактирования.,

Или, если вы используете класс CEdit, используйте его метод GetSel().

Вызовэта функция позволяет получить начальную и конечную позиции символов текущего выделения (если оно есть) в элементе управления редактирования, используя либо возвращаемое значение, либо параметры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...