Правильный способ заменить CHeaderCtrl пользовательской версией в CListCtrl

CListCtrl имеет встроенный элемент CHeaderCtrl, и мы хотим переопределить его с помощью чего-то настроенного, то есть класса, производного от CHeaderCtrl.

Каков наилучший / правильный способ сделать это, предполагая, что у нас есть диалог CMyDlg, который содержит CListCtrl m_List и пользовательский заголовок CCustomHeader.

2 ответа

Вы должны иметь возможность вызывать CWnd::SubclassWindow из вашей переменной-члена CCustomHeader.

m_Header.SubclassWindow(m_List.GetHeaderCtrl()->GetSafeHwnd());

Получите класс от CListCtrl и реализовать обработчики для нужных вам уведомительных сообщений. Сообщения названы LVN_ для сообщений об элементе управления списком и его элементах, а также HDN_ для элементов об элементе управления заголовком.

Другие вопросы по тегам