MFC 文件:winctrl4.cpp
(C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc)
CString CRichEditCtrl::GetSelText() const
{
ASSERT(::IsWindow(m_hWnd));
CHARRANGE cr;
cr.cpMin = cr.cpMax = 0;
::SendMessage(m_hWnd, EM_EXGETSEL, 0, (LPARAM)&cr);
CStringA strText;
LPSTR lpsz=strText.GetBufferSetLength((cr.cpMax - cr.cpMin + 1)*2);
lpsz[0] = NULL;
::SendMessage(m_hWnd, EM_GETSELTEXT, 0, (LPARAM)lpsz);
strText.ReleaseBuffer();
return CString(strText);
}
我有一个奇怪的问题,当我调用它时,它只返回所选字符串的第一个字符。cr
已正确设置,但在::SendMessage(m_hWnd, EM_GETSELTEXT,...
整个字符串不存在之后。
由于预期的问题(一个字节中包含零的两个字节字符) ,我在我的自定义代码中看到了类似的行为。但这是 MFC/Win32 的一部分!我的 .rc 文件是否有可能设置错误?是否有与此相关的创建风格?或者,既然我们为相关控件创建了一个 CFont,那会不会搞砸呢?WCHAR
CHAR