当光标位置在编辑控件 MFC 中更改时是否有通知代码?

Is there a notification code when cursor position changes in Edit Control MFC?

本文关键字:是否 通知 代码 位置 光标 编辑 MFC 控件      更新时间:2023-10-16

当光标位置在编辑控件 MFC 中更改时,是否发送通知代码?我想显示用户的光标(字符(位置

当插入符号位置更改时,Edit 控件本身不会发送EN_...通知。

但是,可以使用SetWinEventHook()注册应用的进程 ID 和 UI 线程 ID 的EVENT_OBJECT_LOCATIONCHANGE通知。


EVENT_OBJECT_LOCATIONCHANGE 0x800B

对象的位置、形状或大小已更改。系统为以下用户界面元素发送此事件:插入符号和窗口对象。服务器应用程序为其可访问对象发送此事件。

然后,可以让回调函数通过检查提供的hwnd是否是 Edit 控件以及提供的idObject是否OBJID_CARET来筛选通知。

OBJID_CARET

窗口中的文本插入栏(插入符号(。

检测到后,可以通过向 Edit 控件发送EM_GETSEL消息来获取实际插入符号位置。

获取编辑控件中当前所选内容的开始和结束字符位置(以 TCHAR 为单位(。

或者,如果您使用的是CEdit类,请使用其GetSel()方法。

调用此函数以使用返回值或参数获取编辑控件中当前所选内容(如果有(的开始和结束字符位置。