c++ - 如何在 WTL 的 treeview 控件中包装项目文本

标签 c++ treeview atl wtl

我正在维护一个包含 TreeView 的 ATL/WTL 项目。用于 TreeView 的类是 CTreeViewCtrl。现在,客户要求在树项文本离开 View 时换行,但我们可以随时调整 Pane 大小或左右滚动以查看内容。当鼠标指针悬停在树项目上时,它还会在隐藏时显示完整的字符串作为工具提示。

有什么方法可以在树项目或 TreeView 中设置来包装文本内容。

谢谢

最佳答案

有一种方法:在处理来自 TreeView 控件的 NM_CUSTOMDRAW 消息时,自定义绘制 TreeView 的项目,特别是 CDDS_ITEMPOSTPAINT 绘图阶段。

在自定义绘图上,您使用 ::DrawText() 绘制多行文本带有 DT_WORDBREAK 标志。 为了有足够的空间供文字使用TVITEMEX结构的 iIntegral 字段。您必须通过将 TVM_SETITEM 消息发送到 TreeView 窗口来指定每个节点的行数,并将指向 TVITEMEX 的指针作为 LPARAM。

每次 TreeView 的时候,您都必须重新计算每个树节点的行数宽度变化 ( WM_SIZE )。

关于c++ - 如何在 WTL 的 treeview 控件中包装项目文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20465667/

相关文章:

C++ 如何对非常快的操作进行基准测试

c++ - 带有 OpenGL 的 C++ 中的原始重启索引错误

wpf - TreeView.IsSelected 触发器无法正常工作

vb.net - 更改treeview子节点颜色文本颜色和图像

visual-studio - 是否有有关.rgs文件语法的文档?

c++ - 使用 VS Express 时在控制台应用程序中使用 CString

c++ - 为什么 std::is_error_code_enum<std::errc>::value 为假?

c++ - VC++链接器删除静态库的间接依赖

c# - 将节点添加到 TreeView 会导致 Thread-Exception

c++ - ATL COM 类的单个实例