Delphi 使用WM_GETTEXT-如何设置大小?

Delphi 使用WM_GETTEXT-如何设置大小?,delphi,size,window-handles,arrays,Delphi,Size,Window Handles,Arrays,我只是想知道-在使用WM_GETTEXT时,通常应该将大小(当前为512)设置为什么?我猜这与源代码管理中有多少文本不同 在处理大量文本时,您建议将其设置为什么 有没有一种方法可以实现同样的操作(从句柄获取文本),而不必设置大小等?您应该使用WM\u GETTEXTLENGTH读取大小,并使用缓冲区的值。谢谢!我早该想到的!我应该加1吗?我相信我看到有人对WM_GETTEXTLENGTH进行了MSDN声明:返回值是以字符为单位的文本长度,不包括终止的空字符。对于WM_GETTEXT MSDN状态

我只是想知道-在使用WM_GETTEXT时,通常应该将大小(当前为512)设置为什么?我猜这与源代码管理中有多少文本不同

在处理大量文本时,您建议将其设置为什么


有没有一种方法可以实现同样的操作(从句柄获取文本),而不必设置大小等?

您应该使用
WM\u GETTEXTLENGTH
读取大小,并使用缓冲区的值。

谢谢!我早该想到的!我应该加1吗?我相信我看到有人对WM_GETTEXTLENGTH进行了MSDN声明:返回值是以字符为单位的文本长度,不包括终止的空字符。对于WM_GETTEXT MSDN状态:要复制的最大字符数,包括终止的空字符。所以是的,你应该加1。@Jeff:如果答案是你问题的答案,你可以接受;-)@Jeff Of source您通常使用
SetLength()
SetString()
执行此操作,这些例程不需要+1。我想看看TWinControl.GetText和ape代码。@Jeff:请试着想想你收到的答案。一个30秒的快速测试可以回答您关于添加1或不添加1的问题,并且您比在这里等待答案要快得多。
Var
 PText : array[0..512] of Char;
 Handle, Child : HWND;
begin
 FillChar(PText,512,0);
 Handle := FindWindow('Notepad',nil);
 Child := FindWindowEx(Handle,0,'Edit',nil);

 Caption := IntToStr(Handle)+' - '+IntToStr(Child);

 SendMessage(Child,WM_GETTEXT,512,Integer(@PText[0]));

 ShowMessage(PText);

end;