Мой Google-фу подтверждает ваш, никаких примеров, которые добавляют неинвазивный интерфейс фильтра к CListCtrl
, с CHeaderCtrl
.
или без него.
Простой подход
В вашем HDN_ITEMCLICK
обработчике отметьте ((NMHEADER)lParam).iButton
. Для iButton == 1
это правая кнопка мыши. Вот ваш шанс показать небольшой CWnd
пользовательский интерфейс фильтра. Проблема с этим подходом в том, что нет визуальной индикации того, что щелчок правой кнопкой мыши вызовет меню фильтра.
Сложнее
Создайте три изображения заголовка столбца - значок фильтра, стрелка вверх + значок фильтра, стрелка вниз + значок фильтра. Если столбец не отсортирован, покажите изображение только для фильтра, в противном случае используйте соответствующую стрелку + изображение фильтра. Нажмите ручку на CListCtrl
на уровне NM_RCLICK
, чтобы получить информацию о координатах ( пример .) Выполните некоторую геометрию, чтобы выяснить, был ли щелчок на значке фильтра, если да, покажите немного CWnd
-обработан фильтр UI. Вы можете стать еще интереснее и показать текущий фильтр во всплывающих подсказках, создать больше изображений с цветными фильтрами, чтобы показать, когда фильтр активен.