gpt4 book ai didi

c++ - 向文本字段添加换行符 (Win32)

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:23 27 4
gpt4 key购买 nike

我正在制作一个记事本克隆。现在我的文本加载正常,但在它们是换行符的地方,它们不会在文本字段中创建换行符。

我是这样加载的:

void LoadText(HWND ctrl,HWND parent)
{

int leng;
char buf[330000];

char FileBuffer[500];
memset(FileBuffer,0,500);

FileBuffer[0] = '*';
FileBuffer[1] = '.';
FileBuffer[2] = 't';
FileBuffer[3] = 'x';
FileBuffer[4] = 't';

OPENFILENAMEA ofn;
memset(&ofn, 0, sizeof(OPENFILENAMEA));
ofn.lStructSize = sizeof(OPENFILENAMEA);
ofn.hwndOwner = parent;
ofn.lpstrFile = FileBuffer;
ofn.nMaxFile = 500;
ofn.lpstrFilter = "Filetype (*.txt)\0\0";
ofn.lpstrDefExt = "txt";
ofn.Flags = OFN_EXPLORER;

if(!GetOpenFileNameA(&ofn))
{
return;
}
ifstream *file;
file = new ifstream(FileBuffer,ios::in);

int lenn;
lenn = 0;

while (!file->eof())
{

buf[lenn] = file->get();
lenn += 1;

}
buf[lenn - 1] = 0;

file->read(buf,lenn);
SetWindowTextA(ctrl,buf);
file->close();
}

如何让它做换行符?

谢谢

(修复了它,事实证明流没有给我 CR,所以我不得不插入它们。

最佳答案

确保您设置了 ES_MULTILINE|ES_WANTRETURN

多行编辑控件使用“软换行字符”强制换行。要指示“软换行符”,请使用 CCRRLF ( source )。所以我想你需要用 CRCRLF 替换你所有的 CRLF(或者你的文件使用的任何 eol 字符)。您已经在逐个字符地读取文件,因此您只需在缓冲区中插入一个额外的 CR。

作为旁注,您最终会希望在单独的线程(即不是 UI 线程)上执行文件 IO,这样您就不会在读取文件时挂起 UI。如果 UI 显示某种加载动画或进度条,那就太好了。

关于c++ - 向文本字段添加换行符 (Win32),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701860/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com