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

标签 windows winapi visual-c++ controls

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

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

每当我手动输入带有回车符的多行文本并调用 GetWindowText() 时,检索到的文本被分成包含 CRLF 字符的行正如预期的那样。但是,当我尝试使用 SetWindowText() 将相同的文本放回编辑控件时,该控件将该文本显示为单个字符串。

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

最佳答案

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

对我来说效果很好。

这将显示两行文本:

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

Hello
World!

这将在 1 行上显示文本:

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

HelloWorld!

关于windows - Win32 多行编辑控件在 SetWindowText() 上丢失回车符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1940766/

相关文章:

c++ - Visual C++ 可再发行再发行

c++ - 带有 C++11 的 Visual Studio 2008

Windows 中的 Python 环境变量?

.net - BeginInvoke-EndInvoke问题

c++ - 如何将 char* 转换为 TCHAR[ ]?

c++ - 具有管理员权限的 shellexecute 不会结束

c++ - 如何使用http请求只获取字符串名称

windows - mac pkg 等效于 windows 使 iTunes 文件共享接受文件夹

windows - Git-bash Tab 补全 : "fatal: Not a git repository: ' . git'"(Windows)

c++ - 设置安全信息 : Undeclared Identifier