这就要用到子类化,从CHeaderCtrl类派生一个自己的类,然后拦截消息。
在用到HeaderCtrl的类中,把CMyHeaderCtrl作为成员变量,在类初始化时,
写上m_myHeaderCtrl.SubClassDlgItem(ID_XXXX,this)

解决方案 »

  1.   

    Prevent CListCtrl column resizing--------------------------------------------------------------------------------
    The header control in the ListView control sends notification to the parent window (e.i. the ListView) before it begins resizing a column. We can override the OnNotify() function in the CListCtrl derived class to handle this notification. The code below prevents resizing of all columns. Note that the resize cursor still shows up. 
    BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
    {
            switch (((NMHDR*)lParam)->code)
            {
                    case HDN_BEGINTRACKW:
                    case HDN_BEGINTRACKA:
                            *pResult = TRUE;                // disable tracking
                            return TRUE;                    // Processed message
            }
     
            return CListCtrl::OnNotify(wParam, lParam, pResult);
    }
    If you want to prevent resizing of only one column, you should check for the value in iItem field of the HD_NOTIFY structure. The code below stops only the first column from being resized. 
      
    BOOL CMyListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
    {
            HD_NOTIFY   *pHDN = (HD_NOTIFY*)lParam;        if((pHDN->hdr.code == HDN_BEGINTRACKW || pHDN->hdr.code == HDN_BEGINTRACKA)
                    && pHDN->iItem == 0)            // Prevent only first (col# 0) from resizing
            {
                    *pResult = TRUE;                // disable tracking
                    return TRUE;                    // Processed message
            }
     
            return CListCtrl::OnNotify(wParam, lParam, pResult);
    }