在MFC CRICHEDITCRL中,如何获取角色所占用的空间

在MFC CRICHEDITCRL中,如何获取角色所占用的空间,mfc,richedit,Mfc,Richedit,在windows操作系统中,在MFC CRICHEDITCRL中,PosFromChar()给出了字符的左上角位置,如何获取该字符或该字符占用的矩形的高度?因此,您已经有了左上角。为下一个角色获得左上角将使您获得右上角 现在是底部。您可以使用CRichEditCtrl::LineFromChar获取行索引。然后使用CRichEditCtrl::LineIndex获取下一行的字符。那个角色的顶部是你的底部 如果控件中只有一行,则可以重复调用cricheditctrl::CharFromPos(),

在windows操作系统中,在MFC CRICHEDITCRL中,PosFromChar()给出了字符的左上角位置,如何获取该字符或该字符占用的矩形的高度?

因此,您已经有了左上角。为下一个角色获得左上角将使您获得右上角

现在是底部。您可以使用
CRichEditCtrl::LineFromChar
获取行索引。然后使用
CRichEditCtrl::LineIndex
获取下一行的字符。那个角色的顶部是你的底部


如果控件中只有一行,则可以重复调用cricheditctrl::CharFromPos(),同时递增垂直位置,直到返回下一个字符。如果这是最后一个字符,您可以对上一个字符执行此操作。如果控件中只有一个字符-您可以临时添加另一个字符,获取坐标并将其删除。

一旦知道字符并检索到控件的设备上下文,您就可以使用该函数。@Adrian,如果未选择任何文本,我无法获取字符或文本,我只能获取字符索引。GetWindowText()将返回控件的全部内容,我相信。然后,您可以在指定的位置提取字符。当我们只键入一行并移动光标时,或者当我们将光标移动到最后一行时,下一行的CRichEditCtrl::LineIndex将字符索引设置为-1。对于这个场景,我们需要做什么?我无法理解您的解决方案,因为只有一行和最后一行的字符。如果您提供代码片段,它将helpful@user369287-您能否澄清您的要求和限制?阿德里安·莫尔在他的评论中提出了最简单的方法;你说过没有选择你不能这么做。常见的解决方案是(1)保存当前选择,(2)隐藏选择,(3)选择您感兴趣的角色,(4)完成任务,(5)恢复选择,(6)取消隐藏选择