在外部应用程序的文本区域中设置插入符位置?

发布于 2024-11-03 08:43:06 字数 439 浏览 4 评论 0原文

感谢 Rob Kennedy 对我的问题的回答 如何设置 Skype 聊天窗口文本。

但是,每当我使用

SendMessage(RichEditWnd,WM_SETTEXT,0,Integer(PChar(Edit1.Text)));

then 设置文本时,当我单击中的聊天编辑控件时Skype,插入符号位于开头,需要单击一些才能再次“正确”。

是否有用于设置插入符位置的 Windows 消息?或者至少可以用来将 Carret 位置设置到文本末尾? :)

Thanks to Rob Kennedy's answer to my question on how to set the Skype Chat window text.

However, whenever I set the text using

SendMessage(RichEditWnd,WM_SETTEXT,0,Integer(PChar(Edit1.Text)));

Then when I click on the Chat Edit control in Skype, the carret is placed at the beginning and some clicking is required to get it "right" again.

Is there a Windows Message for setting the carret position? Or atleast something that I can use to set the Carret Position to the end of the text? :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

熟人话多 2024-11-10 08:43:06

是的,有:EM_EXSETSEL

wParam 应该是 0lParam 应该是指向包含第一个和最后一个字符的 TCharRange 结构的指针选择。您希望它们相等(即选择零个字符)。

例如,

var
  cr: TCharRange;
begin
  cr.cpMin := 2;
  cr.cpMax := 2;
  SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, integer(@cr));

将在 Rich Edit 控件中的第三个字符之前设置插入符号。

Yes, there is: EM_EXSETSEL.

wParam should be 0, and lParam should be a pointer to a TCharRange structure containing the first and last characters in the selection. You want these to be equal (that is, zero characters selected).

For instance,

var
  cr: TCharRange;
begin
  cr.cpMin := 2;
  cr.cpMax := 2;
  SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, integer(@cr));

will set the caret just before the third character in the Rich Edit control.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文