MFC 怎么将RichEdit中的光标定位在指定的行和列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 怎么将RichEdit中的光标定位在指定的行和列相关的知识,希望对你有一定的参考价值。

俺没有好的办法
只会循环定位行数个数的"\\n"的位置n_index,然后再加上列数i
然后再
GetRichEditCtrl().SetSel(n_index+i,n_index+i);
参考技术A 你讲RichEdit封装到一个类上,可以新建一个,在里面添加消息函数,OnLBUTTONDOWN(),在函数里面用SetCaretPos();试试吧,

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

【中文标题】编辑控件 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 怎么将RichEdit中的光标定位在指定的行和列的主要内容,如果未能解决你的问题,请参考以下文章

vc MFC EDIT控件 设置光标位置

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

如何在MFC中使用richedit控件_RICHEDIT_VER over 2.1

如何定位文件中的指定的一个位置(delphi)?

如何从RICHEDIT控件中消除MessageBeep?

在 mfc 的 cedit 控制中处理箭头键