CListCtrl在ICON下,如何实现重命名,请给出详细的代码和说明,谢谢!
       if(m_pCurrentItem==-1) return;
   m_PartLst.SetFocus();
  CEdit* pmyEdit =m_PartLst.EditLabel(m_pCurrentItem);
  ASSERT(pmyEdit!=NULL);
这样写对不对?怎么老是在命完名字后出现应用程序异常?请大家指点,谢谢!

解决方案 »

  1.   

    需要重载消息响应函数// 声明
    afx_msg void OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult);
    afx_msg void OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult);// 映射
    ON_NOTIFY_REFLECT(LVN_BEGINLABELEDIT, OnBeginlabeledit)
    ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEndlabeledit)// 实现
    void CIPSecVPNView::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here

    // 设置文本最大长度
    m_listctrl.GetEditControl()->LimitText(20);   
           // 获取编辑前的文本
           // m_listctrl.GetEditControl()->GetWindowText(m_sItemText); *pResult = 0;
    }void CIPSecVPNView::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    // TODO: Add your control notification handler code here

    int nItem = pDispInfo->item.iItem;       
    int nSubItem = pDispInfo->item.iSubItem;   

    CString strText;  
    m_listctrl.GetEditControl()->GetWindowText(strText);   // 获取当前文本
    m_listctrl.SetItemText(nItem, nSubItem, strText);      // 设置后来文本 *pResult = 0;
    }