• 在列表控件上显示提示信息


    当我们在实现列表控件上的提示信息的时候,我们需要处理的一个难点是处理列表条目的折叠和展开这两种情况。

    所谓列表条目的折叠,即在大图标模式(Large Icon Mode)下,列表条目的文字过长而被截断的情况。当用户选择这个条目后,条目的完整文字将会被显示,这个过程就是所谓的展开过程。

    在我们的例子代码中,添加如下的代码,就可以轻松处理这种情况了。

    >> 请移步至 www.topomel.com 以查看图片 <<

    代码解析

    我们先创建了一个列表控件并启用了列表的提示信息属性,然后我们添加了一个列表条目,同时设置了一个很长的条目文字。
    当执行这个程序的时候,我们会发现,当条目没有被选择的时候,条目的文字将会被截断成两行,如果被选择了,则会展示所有的文字。

    我们处理了来自列表控件的 WM_NOTIFY 通知消息,当收到此消息的时候,列表控件通知我们,是时候显示提示信息了。
    接下来,是重要的时刻,我们先检查当前条目是否被展开,如果它是展开状态,那么我们将缓冲区设置为空字符串,以便末尾的 StringCchCat 只会将信息提示文本复制到缓冲区中。

    另一方面,如果条目是折叠的,那么我们会附加一个行终止符,因为我们希望信息提示包含条目的全文,然后是提示文本。

    运行此程序时,将鼠标悬停在折叠和展开的项目上,并观察折叠状态下的的信息提示是否包含条目的名称。
    这个技法不复杂,在 MSDN 文档中也提到过,但许多开发者可能没有能注意到,所以今天就正儿八经的写出来,以供参考。

    总结

    所谓技术债,就是那些我们似懂非懂的东西始终没有彻底弄明白。日积月累,不明白的东西会越来越多,最终积重难返。
    这就是我们需要不断求索的原因。

    最后

    Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
    本文来自:《Displaying infotips for folded and unfolded listview items》

  • 相关阅读:
    node笔记总结
    逍遥自在学C语言 | break-循环的中断与跳转
    PETSC调试
    YTM32的时钟系统及SCU、IPC外设模块详解
    经纬度坐标转换为工程坐标
    FlyWay入门教程
    【源码+名师讲解】Java游戏开发_Java飞机大战1.0进阶版_Java28个功能点能力提升必备_Java初级项目_Java练手项目_Java课程设计
    【Qt】QTextCursor
    如何在测试/线上环境页面访问本地接口?
    STL六大组件与底层原理
  • 原文地址:https://blog.csdn.net/mmxida/article/details/134501178