我在保留來自RichEdit控件的字符串中的新聞行時遇到問題。 我在做什麼是:無法在RichEdit中保留換行符
- 從RichEdit控件獲取文本
- 一個空格
- 分隔拆分一切添加一些的RTF格式
- 「保險絲」背單詞一起
- 發送短信給控制
我不確定是什麼部件導致這個,所以這裏是最相關的位:
int RichEdit::GetTextLength() const
{
GETTEXTLENGTHEX len;
len.codepage = 1200;
len.flags = GTL_NUMBYTES;
return (int)SendMessage(this->handle, EM_GETTEXTLENGTHEX, (WPARAM)&len, 0) + 1;
}
tstring RichEdit::GetText() const
{
auto len = this->GetTextLength();
GETTEXTEX str;
TCHAR* tmp = new TCHAR[len];
str.cb = len;
str.flags = GT_USECRLF;
str.codepage = 1200;
str.lpDefaultChar = NULL;
str.lpUsedDefChar = NULL;
(void)SendMessage(this->handle, EM_GETTEXTEX, (WPARAM)&str, (LPARAM)tmp);
tstring ret(tmp);
delete[] tmp;
return ret;
}
void RichEdit::SetRtfText(const tstring& text, int flags)
{
DWORD WideLength = text.length();
DWORD Length = WideLength * 4;
PSTR Utf8 = (PSTR)malloc(Length);
int ReturnedLength = WideCharToMultiByte(CP_UTF8,
0,
text.c_str(),
WideLength-1,
Utf8,
Length-1,
NULL,
NULL);
if (ReturnedLength)
Utf8[ReturnedLength] = 0;
SETTEXTEX st = {0};
st.flags = flags;
st.codepage = CP_UTF8;
(void)SendMessage(this->handle, EM_SETTEXTEX, (WPARAM)&st, (LPARAM)Utf8);
free(Utf8);
}
void split (tstring input , tstring split_id, std::vector<std::pair<tstring,bool>>& res) {
std::vector<std::pair<tstring,bool>> result;
int i = 0;
bool add;
tstring temp;
std::wstringstream ss;
size_t found;
tstring real;
int r = 0;
while (i != input.length())
{
add = false;
ss << input.at(i);
temp = ss.str();
found = temp.find(split_id);
if (found != tstring::npos)
{
add = true;
real.append (temp , 0 , found);
} else if (r > 0 && (i+1) == input.length())
{
add = true;
real.append (temp , 0 , found);
}
if (add)
{
result.emplace_back(std::make_pair(real,false));
ss.str(tstring());
ss.clear();
temp.clear();
real.clear();
r = 0;
}
i++;
r++;
}
res = result;
}
PS:tstring僅僅是性病:: wstring的/ STD一個typedef :: string的
我怎樣才能保持新行?
使用此方法我不能插入任何RTF文本,它會將其解釋爲純文本。任何想法爲什麼? – user1233963 2013-03-07 22:22:18
你的文本是否實際上是RTF編碼的(它是否以'「{\ rtf」'或'「{urtf」')開頭? – 2013-03-07 23:12:18
是的,使用我的舊setrfttext函數,它工作正常 – user1233963 2013-03-07 23:12:53