Mfc 在CListCtrl中使用自定义版本替换CHeaderCtrl的正确方法

Mfc 在CListCtrl中使用自定义版本替换CHeaderCtrl的正确方法,mfc,winapi,clistctrl,Mfc,Winapi,Clistctrl,CListCtrl有一个CHeaderCtrl“内置”,我们想用一些定制的东西覆盖它,即从CHeaderCtrl派生的类 假设我们有一个对话框CMyDlg,其中包含一个CListCtrl m_列表和一个自定义头CCustomHeader,那么最好/正确的方法是什么呢。消息以LVN_u命名,表示有关列表控件及其项的消息,也以HDN_u命名,表示有关标头控件的消息。您应该能够从CCustomHeader成员变量调用 m_Header.SubclassWindow(m_List.GetHeaderCt

CListCtrl有一个CHeaderCtrl“内置”,我们想用一些定制的东西覆盖它,即从CHeaderCtrl派生的类


假设我们有一个对话框CMyDlg,其中包含一个CListCtrl m_列表和一个自定义头CCustomHeader,那么最好/正确的方法是什么呢。消息以LVN_u命名,表示有关列表控件及其项的消息,也以HDN_u命名,表示有关标头控件的消息。

您应该能够从CCustomHeader成员变量调用

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

恐怕不可能只更换收割台控制装置。我认为您必须派生整个列表控件,并将您的行为放在其中。您能分享一个简单的例子吗?这如何与CListCtrl::GetHeaderCtrl配合?标头控件的消息被路由到其容器列表控件。如果需要修改标题,则必须使用
this->GetHeaderCtrl()->无论什么
。最好在列表控件的PreSubClassWindow中执行此操作(前提是派生自己的列表控件)。