手工添加MFC list control 的 双击消息响应函数

h
C/C++ code
?
1
afx_msg  void  OnNMDblclkList1(NMHDR *pNMHDR,  LRESULT  *pResult);


cpp
C/C++ code
?
1
ON_NOTIFY(NM_DBLCLK, IDC_LIST1, &ClistDlg::OnNMDblclkList1)


C/C++ code
?
1
2
3
4
5
6
void  ClistDlg::OnNMDblclkList1(NMHDR *pNMHDR,  LRESULT  *pResult)
{
     LPNMITEMACTIVATE pNMItemActivate =  reinterpret_cast <LPNMITEMACTIVATE>(pNMHDR);
     // TODO: 在此添加控件通知处理程序代码
     *pResult = 0;
}


这样就可以响应到在List里的双击了 然后就在响应函数里做你要做的操作   

大概应该是这样吧...呵呵 我也是刚学 





VC2005中list control控件如何获得选中的行 


void SegmentSeting::OnNMDblclkListData(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO: 在此添加控件通知处理程序代码

    *pResult = 0;    

    UpdateData(TRUE);
    
    POSITION pos= m_datadisplay.GetFirstSelectedItemPosition();

    if( pos != NULL )
    {
        displaylist_currentpos= m_datadisplay.GetNextSelectedItem( pos )+1;        

        segmentdata val;
        if( getsegmentnode( displaylist_currentpos,val) )
        {
            CurrentSegmentID= displaylist_currentpos;
            m_segmentid.Format( "%d",CurrentSegmentID);
            m_data1.Format("%f",val.start);
            m_data2.Format("%f",val.finish);
            m_data3.Format("%f",val.slope);
            m_data4.Format("%f",val.keeptime);
        }
    }
    
    UpdateData(FALSE);
    
}


m_datadisplay:为添加的list control类型的变量.

displaylist_currentpos= m_datadisplay.GetNextSelectedItem( pos )+1;        
该句获得了选中的行。

具体过程:

POSITION pos= m_datadisplay.GetFirstSelectedItemPosition();

if( pos != NULL )
 {
      int  displaylist_currentpos= m_datadisplay.GetNextSelectedItem( pos )+1;

} 

其中+1是为了自己程序的其他处理;


猜你喜欢

转载自blog.csdn.net/jevior/article/details/70234711