【问题标题】:How to add data Filtering using CListCtrl and CHeaderCtrl如何使用 CListCtrl 和 CHeaderCtrl 添加数据过滤
【发布时间】:2010-10-07 15:23:47
【问题描述】:

背景:
处理数据集合的应用程序通常使用包含标题的网格呈现。这些相同的应用程序通常包含一个过滤器,以允许用户缩小数据集(Excel 是一个很好的例子。还有很多其他例子)。 在我的 MFC 应用程序中,我尝试使用 CListCtrl 和 CHeaderCtrl 组合来做同样的事情。这种组合已经使我的应用程序能够提供多列排序,包括使用各个标题项的图像功能来表示升序/降序排序。

我已经使用我最好的 Google-fu 来查找 CHeaderCtrl 扩展/自定义以包含自定义绘图以添加过滤器按钮并在单击时显示关联的下拉菜单以供用户输入过滤器条件的任何示例。

问题:

  1. 是否有我遗漏的示例?
  2. 如果互联网上没有可用的示例,在自定义 CListCtrl 和 CHeaderCtrl 以实现我的目标时我应该考虑什么方法?

补充说明:
其中一个答案引用了内置的 FilterBar 功能。是的,我已经看到了,但这不是我想要的。我希望专门模拟 Excel 和其他启用过滤器的应用程序的非静态、非视觉侵入过滤功能。

【问题讨论】:

    标签: mfc filtering clistctrl


    【解决方案1】:

    我的 Google-fu 证实了你的,没有例子为 CListCtrl 添加非侵入式过滤器接口,有或没有 CHeaderCtrl。

    简单的方法
    在您的HDN_ITEMCLICK 处理程序中,检查((NMHEADER)lParam).iButton。对于iButton == 1,这是鼠标右键。这是您展示 CWnd-dervied 过滤器 UI 的机会。这种方法的问题是没有视觉指示右键单击会弹出过滤器菜单。

    更复杂
    创建三个列标题图像 - 过滤器图标、向上箭头 + 过滤器图标、向下箭头 + 过滤器图标。当未按列排序时,仅显示过滤器图像,否则使用适当的箭头 + 过滤器图像。处理在NM_RCLICK 级别单击CListCtrl,以便获得坐标信息(example。)做一些几何图形以确定单击是否在您的过滤器图标上,如果是,显示一点CWnd-derived过滤器用户界面。您可以更漂亮地在标题工具提示中显示当前过滤器,创建更多带有彩色过滤器的图像以显示过滤器何时处于活动状态。

    【讨论】:

      【解决方案2】:

      你在找this吗?

      由于是其他语言,我给出了googled 地址。参考第二个结果。

      【讨论】:

        猜你喜欢
        • 2021-10-07
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 2011-02-27
        • 2022-07-11
        • 2019-06-15
        • 2021-06-27
        • 2018-09-25
        相关资源
        最近更新 更多