Win32多行编辑控件在SetWindowText()上丢失回车符

sha*_*oth 4 windows winapi controls visual-c++

在我的C++ Win32 GUI应用程序中,我有一个对话框,其中包含一个从对话框模板创建的编辑控件:

EDITTEXT   IDC_EDIT_Id, X, Y, W, H,
    ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
Run Code Online (Sandbox Code Playgroud)

每当我用回车手动输入多行文本并调用GetWindowText()检索到的文本时,就会按预期分成带有CRLF字符的行.但是,当我尝试将相同的文本放回编辑控件时SetWindowText(),控件将文本显示为单个字符串.

为什么会出现这种行为,我该如何解决这个问题呢?

Bri*_*ndy 5

当您使用SetWindowText放回文本时,请确保使用\ r \n作为换行符.

对我来说很好.

这将在2行显示文本:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\r\nWorld!"));
Run Code Online (Sandbox Code Playgroud)

你好
世界!

这将在1行显示文本:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\nWorld!"));
Run Code Online (Sandbox Code Playgroud)

你好,世界!