独自のCMFCHeaderCtrl(CMFCHeaderCtrlから派生したfe m_myHeaderCtrl)が必要な場合は、独自のCMFCListCtrlでこれらの3つの関数をオーバーライドする必要があります。
CMFCHeaderCtrl& CMyMFCListCtrl::GetHeaderCtrl()
{
return m_myHeaderCtrl;
}
void CMyMFCListCtrl::InitHeader()
{
// Initialize header control:
m_myHeaderCtrl.SubclassDlgItem(0, this);
}
void CMyMFCListCtrl::OnSize(UINT nType, int cx, int cy)
{
CListCtrl::OnSize(nType, cx, cy);
if (myHeaderCtrl.GetSafeHwnd() != NULL)
{
myHeaderCtrl.RedrawWindow();
}
}
これで、独自のmyHeaderCtrlに完全な応答があり、さらにいくつかの関数を定義できます(ヘッダーに複数行あります)。
OnDrawItem(CDC* pDC, int iItem, CRect rect, BOOL bIsPressed, BOOL bIsHighlighted);
またはによって独自のレイアウトを定義する
afx_msg LRESULT OnHeaderLayout(WPARAM wp, LPARAM lp);
例はMFCコードにあります。