编辑控件 MFC 中光标位置更改时是不是有通知代码?
Posted
技术标签:
【中文标题】编辑控件 MFC 中光标位置更改时是不是有通知代码?【英文标题】:Is there a notification code when cursor position changes in Edit Control MFC?编辑控件 MFC 中光标位置更改时是否有通知代码? 【发布时间】:2019-09-19 19:06:54 【问题描述】:在编辑控件 MFC 中光标位置发生变化时是否发送通知代码?我想为用户显示光标(字符)位置
【问题讨论】:
RICHEDIT 控件发送EN_SELCHANGE,如果有帮助的话。 【参考方案1】:当插入符号位置发生变化时,Edit 控件本身不会发送EN_...
通知。
但是,您可以使用 SetWinEventHook()
为您的应用的进程 ID 和 UI 线程 ID 注册 EVENT_OBJECT_LOCATIONCHANGE
通知。
EVENT_OBJECT_LOCATIONCHANGE 0x800B
对象的位置、形状或大小发生了变化。系统为以下用户界面元素发送此事件:caret 和窗口对象。服务器应用程序为其可访问对象发送此事件。
然后您可以让您的回调函数通过检查提供的hwnd
是否是您的编辑控件以及提供的idObject
是否为OBJID_CARET
来过滤通知。
OBJID_CARET
窗口中的文本插入栏(插入符号)。
检测到后,您可以通过向编辑控件发送EM_GETSEL
消息来获取实际的插入符号位置。
获取编辑控件中当前选择的开始和结束字符位置(在 TCHAR 中)。
或者,如果您使用的是CEdit
类,请使用它的GetSel()
方法。
调用此函数以获取编辑控件中当前选择(如果有)的开始和结束字符位置,使用返回值或参数。
【讨论】:
谢谢。我试试看。以上是关于编辑控件 MFC 中光标位置更改时是不是有通知代码?的主要内容,如果未能解决你的问题,请参考以下文章
MFC的静态控件怎么响应鼠标事件呀。。要详细一点的。。我菜鸟,谢谢