この関数を使用して、リッチエディットコントロールからテキスト行を取得します。リッチエディットコントロールからユニコード文字を取得
CString RichEditCtrlEx::getLine(int charIndex) const
{
CString retval;
int lineIndex = LineFromChar(charIndex);
ASSERT(lineIndex>=0 && lineIndex<GetLineCount());
int sizeOfLine = LineLength(charIndex);
TCHAR* buffer = new TCHAR[sizeOfLine + 148];
ASSERT(buffer);
if (buffer) {
memset(buffer,0,sizeOfLine + 148);
*((int *)buffer) = sizeOfLine;
GetLine(lineIndex, buffer);
retval = buffer;
delete[] buffer;
}
return retval;
}
関数getlineは:それは完璧に動作するほとんどの部分について
_AFXWIN_INLINE int CEdit::GetLine(_In_ int nIndex, _Out_ LPTSTR lpszBuffer) const
{ ASSERT(::IsWindow(m_hWnd)); return (int)::SendMessage(m_hWnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
。しかし、リッチエディットコントロールのテキストに特殊文字(「拿壴壴竒」など)が含まれていると、返される文字が間違っています(例の文字を使用した場合、結果は「ÿìôÒ」)
EM_GETLINEメッセージはこれらの特殊文字を許可しますか?あるいは私は別のアプローチが必要ですか?
あなたのプロジェクトはUnicodeを使用するように設定されていますか? –
@jimRhodesはいそれは –
の可能な複製です[どのように私はCRichEditCtrlにUnicodeサポートを追加しますか?](http://stackoverflow.com/questions/1474399/how-do-i-add-unicode-support-to-a -cricheditctrl) – ybungalobill