BOOL CEnhancedListCtrl::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) 
{
// TODO: Add your specialized code here and/or call the base class
// wParam is zero for Header ctrl
LPNMHDR pNH = (LPNMHDR) lParam; 
if( wParam == 0 && pNH->code == NM_RCLICK )
{
// Right button was clicked on header
CHeaderCtrl* pHeader = CListCtrl::GetHeaderCtrl();
if(pHeader){
CPoint pt(GetMessagePos());
CPoint posMouse=pt;
pHeader->ScreenToClient(&pt);
// Determine the column index
int index=-1;
CRect rcCol;
for( int i=0; pHeader->GetItemRect(i, &rcCol); i++ )
{
if( rcCol.PtInRect( pt ) )
{
index = i;
break;
}
}
*pResult=TRUE;
OnHeaderRClick(posMouse,i);
return TRUE;
}
}
return CListCtrl::OnNotify(wParam, lParam, pResult);
}

解决方案 »

  1.   

    重载LVN_ITEMCHANED消息然后再试试.....下班了,下星期待你好消息!!!
    void CHistoryList::OnItemchangedHistoryList(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    CButton* m_btnDel=(CButton*)GetDlgItem(IDC_DELETE);
    int nSelected=pNMListView->iItem;
    int nSubItem=pNMListView->iSubItem;
    if (nSelected>=0)
    {
    TRACE("选择了第%d条记录\n",nSelected);
    m_btnDel->EnableWindow(true);
    }
    else
    {
    m_btnDel->EnableWindow(false);
    }
    *pResult = 0;
    }
      

  2.   

    : jiangsheng(蒋晟卧病中) 
      兄弟是不是抄的编程高手上的啊。好熟悉的代码啊,呵呵,我等一下试试,现在已经下班了。下周一下班前一定节帖!:qiuanhong(练从难处练,用从易处用) (
       我是按下标题,不是按客户区,这个消息应该对我没有用,:)
      

  3.   

    CListCtrl& list = GetListCtrl();
    POSITION pos;
           pos = list.GetFirstSelectedItemPosition();
    if (pos == NULL)
    {
    MESSAGEBOX("没有选择行!")
    }
    else{
       nItem = list.GetNextSelectedItem(pos);//nItem为所选择的
    记录号}
      

  4.   

    : alphapiao(叶飘飞) 
       这个我试过了。得到的POS都是NULL
      

  5.   

    :ciacia(钻在代码里的妞~)
    多谢UP
      

  6.   

    : jiangsheng(蒋晟卧病中) 
       似乎也没有用:(,完了。搞之不定了...........
      

  7.   

    afx_msg void OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult);
    BEGIN_MESSAGE_MAP(CTestView, CListView)
    //{{AFX_MSG_MAP(CTestView)
    ON_NOTIFY_REFLECT(LVN_COLUMNCLICK, OnColumnClick)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
    void CTestView::OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    NMLISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
    // TODO: Add your control notification handler code here
    *pResult = 0;
    }
      

  8.   

    如果你是用左键单击标题栏,倒可以得到第几列。
    首先要弄出这个函数,OnColumnclick(NMHDR* pNMHDR, LRESULT* pResult),
    然后设你要的值为index,则
    NM_LISTVIEW * pNMListView = (NM_LISTVIEW *)pNMHDR;
    index = pNMListView->iSubItem;