C++ 避免在ListView中截断标签

C++ 避免在ListView中截断标签,c++,winapi,3dsmax,C++,Winapi,3dsmax,伙计们! 我使用listview(图标模式)来显示由图像和标签组成的项目。 正如您在快照中所看到的,行高度随y的变化而变化,具体取决于标签长度。问题是我希望绘制完整的标签,但它们会自动收缩为两行: 奇怪的是,一旦你选择了一个项目,整个标签就会显示出来: 取消选择项目时也是这种情况,但当选择另一个项目时,只有该项目将完全显示。 在我的例子中,有没有办法(不用手动绘制文本)避免截断? 如果需要一些代码来回答这个问题,请不要犹豫 您好, Satara我猜这是一个设计选择:让东西看起来不那么杂乱。例如

伙计们! 我使用listview(图标模式)来显示由图像和标签组成的项目。 正如您在快照中所看到的,行高度随y的变化而变化,具体取决于标签长度。问题是我希望绘制完整的标签,但它们会自动收缩为两行:

奇怪的是,一旦你选择了一个项目,整个标签就会显示出来: 取消选择项目时也是这种情况,但当选择另一个项目时,只有该项目将完全显示。 在我的例子中,有没有办法(不用手动绘制文本)避免截断? 如果需要一些代码来回答这个问题,请不要犹豫

您好,
Satara

我猜这是一个设计选择:让东西看起来不那么杂乱。例如,将所有标签完全显示在桌面上。。。在我的情况下看起来会很混乱


但是,您可以通过自己绘制标签来解决此问题。查看列表控件提供的服务。问题是,这通常是一种全有或全无的方法,因此这可能需要您自己绘制所有内容:边框、图像、标签等。另一种方法是进行黑客攻击:对窗口进行子类化,并在Windows响应多条消息后再次绘制标签(不幸的是,Windows没有将绘制限制为
WM_PAINT
,这是旧时代遗留下来的优化…)

非常感谢您的回复!让我希望有一个更简单的解决方案,那就是windows资源管理器在缩微视图中显示整个标签。您是否尝试过使用
LVS_EX_COLUMNOVERFLOW
?不幸的是,此标志在我的环境中不可用,但我可以使用LVS_EX_Hidelabel隐藏标签并手动绘制它们按照demorge的建议!谢谢!