c++ - 在 Win32 API ListView 中添加带换行符的文本

标签 c++ winapi

我正在使用 WC_LISTVIEW 控件创建一个在运行时填充数据的表。该表工作正常。但是,我无法在一个单元格中显示多行。

有没有办法使用换行符(例如使用 \n)?

这是我创建表格的方式:

HWND listViewErrors = CreateWindow(WC_LISTVIEW, L"",
    WS_VISIBLE | WS_BORDER | WS_CHILD | LVS_REPORT | LVS_SINGLESEL,
    17, 27, errorsRect.Width() - 12, errorsRect.Height() - 25,
    GetWindowHandle(), (HMENU)ID_LIST_ERRORS, NULL, 0);

我这样添加行:

LVITEM lvi = { 0 };

lvi.mask = LVIF_TEXT;
lvi.pszText = L"Label of an entry";

int ret = ListView_InsertItem(hwndList, &lvi); // Main item

if (ret >= 0)
{
    ListView_SetItemText(
            hwndList,
            ret,
            1,
            L"A description containing\nline breaks, but the\nline breaks will be\nignored."); // Sub item
}

return ret;

结果是换行符 (\n) 不再可见,但文本仍在单行中。

enter image description here

最佳答案

除非您使用自定义绘制或所有者绘制,否则 LISTVIEW 窗口从不支持报告模式下的多行条目。

即使使用自定义绘制或所有者绘制,所有行也将具有相同的高度。

关于c++ - 在 Win32 API ListView 中添加带换行符的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47072634/

相关文章:

c - 为什么名称修饰与 WinMain() 函数一起使用?

c++ - 有没有办法检查(在控制台应用程序中)是否在键盘上按下了 a-z 和 1-9 中的任何字母数字键?

c++ - 写网络使用程序应该用什么API?

c++ - 如何使 C++ 程序与鼠标点击和 X 窗口系统应用程序交互?

c++ - 如何在 Windows 命令行中读取输入 .in 文件

delphi - 如何使用GetThemeStream保存Windows主题部分? (DWMWINDOW除外)

c++ - 有没有办法得到标准 :string's buffer

c++ - 交换基本类型的对象会抛出异常吗?

c++ - 如何在 Qt 的 Linux 上获取 USB 驱动器的路径?

c++ - 如何正确从函数返回指针