在Edit Control MFC中光标位置更改时,是否有通知代码?

Dou*_*ear 2 c++ windows mfc

当在Edit Control MFC中光标位置更改时,是否发送通知代码?我想为用户显示光标(字符)的位置

Rem*_*eau 5

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

但是,您可以SetWinEventHook()用来注册有关EVENT_OBJECT_LOCATIONCHANGE应用程序的进程ID和UI线程ID的通知。

EVENT_OBJECT_LOCATIONCHANGE
0x800B

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

然后你可以有你的回调函数过滤通知通过检查所提供的hwnd是你的编辑控制和提供idObjectOBJID_CARET

OBJID_CARET

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

当检测到时,您可以通过向EM_GETSEL“编辑”控件发送消息来获得实际的插入符位置。

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

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

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