Правильный способ заменить CHeaderCtrl пользовательской версией в CListCtrl
CListCtrl имеет встроенный элемент CHeaderCtrl, и мы хотим переопределить его с помощью чего-то настроенного, то есть класса, производного от CHeaderCtrl.
Каков наилучший / правильный способ сделать это, предполагая, что у нас есть диалог CMyDlg, который содержит CListCtrl m_List и пользовательский заголовок CCustomHeader.
2 ответа
Вы должны иметь возможность вызывать CWnd::SubclassWindow из вашей переменной-члена CCustomHeader.
m_Header.SubclassWindow(m_List.GetHeaderCtrl()->GetSafeHwnd());
Получите класс от CListCtrl
и реализовать обработчики для нужных вам уведомительных сообщений. Сообщения названы LVN_ для сообщений об элементе управления списком и его элементах, а также HDN_ для элементов об элементе управления заголовком.