【发布时间】:2016-03-11 17:09:14
【问题描述】:
基本上,我用 C# 编写了一个程序,该程序使用 user32.dll 从任何窗口句柄中获取文本和当前插入符号的位置。处理完文本后,程序将控件的文本设置为新字符串,并重置插入符号的位置。
我遇到的问题是EM_GETSEL 根据 CR+LF 的插入符号位置的数量返回 RichEdit 控件的插入符号位置。
Edit 控件将它们视为两个字符,而 RichEdit 控件将它们视为一个“字符”。
无论如何我可以通过 Windows 消息检测到这两个控件中的哪一个?
或者有没有更好的方法可以检测非托管控件的插入符号位置?
【问题讨论】:
-
RichEdit 是否将 CRLF 计为一个或两个字符在这里并不重要,只要这样做是一致的:报告位置时,还有长度和更新。在这种情况下,应该没有问题。您是否看到了这方面的实际问题?
-
使用 GetClassName()
-
当控件被子类化时,GetClassName() 不会报告有意义的类名,Windows 应用程序中的大多数控件都是这样。
标签: c# newline edit unmanaged richedit