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,...
、文字列全体が存在しません。
問題 (1 バイトに 0 を含む 2 バイト文字) が原因で、予想されるときにカスタムコードで同様の動作が見られました。しかし、これは MFC/Win32 の一部です! 私の .rc ファイルが何か間違った設定をしている可能性はありますか? これに関連する作成スタイルはありますか? それとも、問題のコントロールの CFont を作成するので、それが台無しになる可能性はありますか?WCHAR
CHAR