【问题标题】:Win32 multiline edit control loses carriage returns on SetWindowText()Win32 多行编辑控件在 SetWindowText() 上丢失回车符
【发布时间】:2010-12-28 18:51:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: windows winapi visual-c++ controls


    【解决方案1】:

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

    对我来说很好用。

    这将显示两行文本:

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

    你好
    世界!

    这将在 1 行显示文本:

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

    你好世界!

    【讨论】:

    • 是的,就是这样。现在我标准化如下:首先将所有“\n”替换为“”,然后将所有“\r”替换为“\r\n”。非常感谢。
    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 2023-04-11
    • 2015-10-04
    相关资源
    最近更新 更多