我正在用visual c ++编写一个基本程序,允许用户输入文本,然后程序翻转文本并显示给用户进行复制。该程序运行良好,直到您在编辑框中添加一个输入。当用户单击以翻转文本而不是向下一行时,它会显示\ r \ n的实际字符。
有没有办法按原样显示文本而不是实际的字符串本身?
以下是我设置文字的方法:
wchar_t lpwString[4096];
int length = GetWindowTextW(text->hwnd, lpwString, 4096);
SetWindowText(text->hwnd, flipText(lpwString, length));
这是方法flipText
LPWSTR flipText(wchar_t textEntered[], const int len) {
wchar_t text[4096];
wchar_t flipped[4096];
wcsncpy_s(text, textEntered, len +1);
wcsncpy_s(flipped, textEntered, len +1);
for (int i = len -1, k = 0; i > -1; i--, k++)
flipped[k] = text[i];
return flipped;
}
“text”只是我为编辑EDIT框而创建的对象。
答案 0 :(得分:1)
对于编辑框,返回是CR + LF序列,当您反转要在LF + CR中转换它的文本时,该文本无法识别(它显示单个字符)。一个简单的方法可能是对反向字符串进行第二次传递,并将所有LF + CR对交换为CR + LF。
顺便提一下,你的flipText
函数被严重破坏了 - 你正在执行原始字符串的无用额外副本,并且你正在返回一个指向本地数组的指针,这只是偶然的。一种更简单的方法可能就是将字符串就地反转。
此外,如果您使用的是C ++,则应考虑使用std::string
(如果使用宽字符,则使用std::wstring
),这会删除整个类的缓冲区生命/大小问题。
答案 1 :(得分:0)
\n\r
更改回\r\n
。答案 2 :(得分:0)
编辑控制需要' \ r \ n'组合打破。当你翻转所有文字时,你会得到\n\r
,这对于窗户而言只有文字。
建议 - 翻转文字并将所有\n\r
替换回\r\n