【问题标题】:A few ListView questions几个 ListView 问题
【发布时间】:2010-10-21 20:16:14
【问题描述】:

ListView 控件的文档(使用 WinApi)似乎缺少一些基本信息,以下是一些我似乎找不到解决方案的问题:

  1. 在大多数应用程序中,当您双击列右侧的边框时,该列的大小会调整为某个默认宽度。我会猜到这个宽度是由 LVCOLUMN.cxDefault 或 cxIdeal 指定的,但它似乎没有这样做。我错过了什么?

  2. 当您单击某一列对列表进行排序时,其顶部会出现一个指示排序方向的小箭头。我如何让它出现?顺便说一句,有人知道 ListView 使用哪种排序算法吗?

  3. 在报表视图中,有什么方法可以选择整行而不是只选择第一项? (只是视觉上的东西,功能上是一样的)

  4. 有什么方法可以一次插入多个项目?

【问题讨论】:

    标签: winapi listview


    【解决方案1】:

    【讨论】:

      【解决方案2】:
      1. 它是根据该列中每个项目的呈现宽度计算得出的。
      2. 箭头是您的程序设置的自定义图像。如果您不设置图像(通过将图像列表与标题相关联,然后按索引为每个标题项指定图像),那么您不会得到一个。我不知道排序算法是什么,但项目比较算法是你想要的任何东西 - 你必须指定一个回调。
      3. 是 - 在控件上设置 LVS_EX_FULLROWSELECT 扩展样式
      4. 没有。但是您可以在添加多个项目时turn off redraw

      如果您不熟悉使用 ListView 控件,我对您的最佳建议是阅读 numerous articles on CodeProject。即使您不使用 MFC(正如许多文章一样),这些概念仍然适用 - 只需将调用转换为等效的 PlatformSDK 宏。

      【讨论】:

      • 感谢您的回答。 1. 明显。不知道我怎么没注意到。 2. 看起来有点矫枉过正。 Windows 似乎为该箭头提供了一些默认图形。另外,每种视觉风格都不同,我应该如何将标准与自定义图像相匹配? 3. 像魔术一样工作。 4. 会调查一下
      • 如果您有能力放弃 XP 之前的兼容性,您可以使用 v6 通用控件并获得一些额外的好处(如主题、组、选定列指示器等)。但是,我还没有充分了解您是否可以使用它来排序图像。
      • 任何提示我可以在哪里查看它?
      • “排序算法是你想要的——你必须指定一个回调。”。不完全正确。回调仅比较单个项目,不提供任何排序​​逻辑。
      • 抱歉,由于某种原因,您以为您在谈论比较函数...无法告诉您内部使用什么算法进行排序。
      猜你喜欢
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2013-06-30
      • 2015-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多