Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 在外部应用程序中设置carret位置';s文本区?_Windows_Delphi_Window Handles - Fatal编程技术网

Windows 在外部应用程序中设置carret位置';s文本区?

Windows 在外部应用程序中设置carret位置';s文本区?,windows,delphi,window-handles,Windows,Delphi,Window Handles,感谢Rob Kennedy对我的问题的回答 但是,每当我使用 SendMessage(RichEditWnd,WM_SETTEXT,0,Integer(PChar(Edit1.Text))); 然后,当我单击Skype中的聊天编辑控件时,carret被放置在开始处,需要进行一些单击才能使其再次“正确” 是否有用于设置卡雷特位置的Windows消息?或者至少是我可以用来将Carret位置设置到文本末尾的东西?:) 是的,有: wParam应该是0,lParam应该是指向TCharRange结构的

感谢Rob Kennedy对我的问题的回答

但是,每当我使用

SendMessage(RichEditWnd,WM_SETTEXT,0,Integer(PChar(Edit1.Text)));
然后,当我单击Skype中的聊天编辑控件时,carret被放置在开始处,需要进行一些单击才能使其再次“正确”

是否有用于设置卡雷特位置的Windows消息?或者至少是我可以用来将Carret位置设置到文本末尾的东西?:)

是的,有:

wParam
应该是
0
lParam
应该是指向
TCharRange
结构的指针,该结构包含所选内容中的第一个和最后一个字符。您希望这些字符相等(即选择零个字符)

比如说,

var
  cr: TCharRange;
begin
  cr.cpMin := 2;
  cr.cpMax := 2;
  SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, integer(@cr));
将在Rich Edit控件的第三个字符之前设置插入符号