EM_GETTEXTEX - 错误的文档返回值?

5
根据MSDN文档,EM_GETTEXTEX返回以下内容:
The return value is the number of TCHARs copied into the
output buffer, including the null terminator.

现在请看下面的代码:
GETTEXTLENGTHEX gtl;
GETTEXTEX gt;
int len;
TCHAR *buf;

memset(&gtl, 0, sizeof(GETTEXTLENGTHEX));
gtl.flags = GTL_DEFAULT;
gtl.codepage = 1200;

len = SendMessage(hEditWnd, EM_GETTEXTLENGTHEX, (WPARAM) &gtl, 0);

printf("LEN: %d\n", len);

buf = malloc((len + 1) * sizeof(TCHAR));

memset(&gt, 0, sizeof(GETTEXTEX));
gt.cb = (len + 1) * sizeof(TCHAR);
gt.flags = GT_DEFAULT;
gt.codepage = 1200;

len = SendMessage(hEditWnd, EM_GETTEXTEX, (WPARAM) &gt, (LPARAM) buf);

printf("LEN: %d NULLCHECK: %d\n", len, buf[len]);

对于包含文本 Hello 的 RichEdit 控件,该程序输出以下内容:
LEN: 5
LEN: 5 NULLCHECK: 0

这让我感到困惑,因为MSDN说EM_GETTEXTEX返回的计数值应该包括空终止符,所以我期望得到6,但实际上只有5。

这是文档错误还是我在这里做错了什么?

编辑

这是清单:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
   version="1.0.0.0"
   processorArchitecture="x86"
   name="ELIMINATED FOR PRIVACY REASONS"
   type="win32"
/>
<description>ELIMINATED FOR PRIVACY REASONS</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
          <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      </requestedPrivileges>
    </security>
</trustInfo>
<dependency>
   <dependentAssembly>
   <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="X86"
      publicKeyToken="6595b64144ccf1df"
      language="*"
      />
   </dependentAssembly>
</dependency>
</assembly>

这里是 CreateWindowEx() 函数的调用:

hEditWnd = CreateWindowEx(0, L"RichEdit20W", L"",
WS_VSCROLL|WS_HSCROLL|ES_LEFT|ES_AUTOHSCROLL|ES_AUTOVSCROLL|
WS_CHILD|ES_MULTILINE|WS_BORDER,  
0,0,0,0, hWnd, NULL, hInstance, NULL);

那么我们该怎么做才能在MSDN上进行更正呢? - Andreas
有很多RichEdit版本,我们看不到您的CreateWindowEx()调用或清单。请在connect.microsoft.com上报告文件错误。 - Hans Passant
已添加所请求的信息到原帖。 - Andreas
1个回答

0

我已经提交了一个文档拉取请求,并且已经合并,因此可以假定这确实是一个错误,并且现在应该已经被修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接