Нет уведомления 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()
.
Вызовэта функция позволяет получить начальную и конечную позиции символов текущего выделения (если оно есть) в элементе управления редактирования, используя либо возвращаемое значение, либо параметры.