我使用此函數從豐富的編輯控件中獲取一行文本。從豐富的編輯控件獲取Unicode字符
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? – 2012-01-09 16:39:45
@jimRhodes是的它是 – 2012-01-09 16:43:29
可能的重複[如何將Unicode支持添加到CRichEditCtrl?](http://stackoverflow.com/questions/1474399/how-do-i-add-unicode-support-to-a -cricheditctrl) – ybungalobill 2012-01-09 16:45:48