Элемент управления 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.,