Многострочный элемент управления Win32 теряет возврат каретки на SetWindowText () - PullRequest
4 голосов
/ 21 декабря 2009

В моем приложении C ++ Win32 GUI у меня есть диалог с элементом управления редактирования, созданным из шаблона диалога:

EDITTEXT   IDC_EDIT_Id, X, Y, W, H,
    ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL

Всякий раз, когда я вручную вводю многострочный текст с возвратом каретки и вызываю GetWindowText(), полученный текст разбивается на строки с символами CR и LF, как и ожидалось. Однако, когда я пытаюсь вставить тот же текст обратно в элемент управления для редактирования с помощью SetWindowText(), элемент управления отображает этот текст в виде одной строки.

Почему это демонстрирует такое поведение и как мне обойти это?

1 Ответ

5 голосов
/ 21 декабря 2009

Когда вы помещаете текст обратно с SetWindowText, убедитесь, что вы используете \ r \ n для новых строк.

У меня отлично работает.

Это отобразит текст в 2 строки:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\r\nWorld!"));

Hello
Мир!

Это отобразит текст в 1 строке:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\nWorld!"));

HelloWorld!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...