嗯,这只是半真的.Newlines在大多数情况下运行良好,但是当我将文件加载到其中时,没有显示任何换行符.复制文本并将其粘贴到Notepad ++中并查看所有打开的字符,表明回车符和换行符都在那里.
我的加载代码:
void open_file(HWND hwnd,const char* fname){
SendMessage(textbox,WM_SETTEXT,(WPARAM)0,(LPARAM)"");
FILE* file=fopen(fname,"r");
fullpath=fname;
filename=fullpath.substr(fullpath.rfind('\\')+1,fullpath.length());
int pos;
while(!feof(file)){
pos=GetWindowTextLength(textbox);
SendMessage(textbox,EM_SETSEL,pos,pos);
fread(buffer,2048,sizeof(char),file);
SendMessage(textbox,EM_REPLACESEL,false,(LPARAM)buffer);}
fclose(file);
SendMessage(hwnd,WM_SETTEXT,0,(LPARAM)filename.c_str());}
Run Code Online (Sandbox Code Playgroud)
Che*_*Alf 12
由于您在文本模式下打开文件,因此您的文本代表换行符\n.可能是文本编辑控件需要\r\n.
一种可能性就是这样做(脱下袖口)
std::string line;
std::ifstream file( fname );
while( std::getline( file, line ) )
{
line += "\r\n";
// Append the line to the edit control here (use c_str() ).
}
Run Code Online (Sandbox Code Playgroud)
但更好的是,一次设置文本,如:
std::string line;
std::string text;
std::ifstream file( fname );
while( std::getline( file, line ) )
{
line += "\r\n";
text += line;
}
SetWindowText( textbox, text.c_str() ... whatever ); // Not sure of args, check docs.
Run Code Online (Sandbox Code Playgroud)
干杯&hth.,
| 归档时间: |
|
| 查看次数: |
7465 次 |
| 最近记录: |