Элемент управления WinAPI edit не отображает новые строки
Ну, это только половина правды. Новые строки работают нормально по большей части, но когда я загружаю файл в него, ни одна из новых строк не отображается. Копирование текста и вставка его в 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());}
1 ответов
поскольку вы открываете файл в текстовом режиме, ваш текст представляет новую строку \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() ).
}
но лучше, установить текст все сразу, как:
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.
Cheers & hth.,