想要雙擊實現(xiàn)修改列表框內容,只需四步:
第一步:添加一個edit控件早任意位置,并關聯(lián)一個變量如:m_edit;,在OnInitDialog()函數(shù)中寫入 m_edit.ShowWindow(SW_HIDE),作用為初始時講編輯框應藏
第二步:添加一個CListCtrl控件,關鍵一個變量如:m_list;然后響應該控件的NM_DBLCLK消息,也就是雙擊事件處理消息
第三部:在雙擊事件處理函數(shù)中寫入:
NM_LISTVIEW* pNMListView=(NM_LISTVIEW*)pNMHDR;CRect rc;m_Row = pNMListView->iItem;//獲得選中的行m_Col = pNMListView->iSubItem;//獲得選中列if (pNMListView->iSubItem != 0) //如果選擇的是子項;{m_listCtrl.GetSubItemRect(m_Row,m_Col,LVIR_LABEL,rc);//獲得子項的RECT;m_edit.SetParent(&m_listCtrl);//轉換坐標為列表框中的坐標m_edit.MoveWindow(rc);//移動Edit到RECT坐在的位置;m_edit.SetWindowText(m_listCtrl.GetItemText(m_Row,m_Col));//將該子項中的值放在Edit控件中;m_edit.ShowWindow(SW_SHOW);//顯示Edit控件;m_edit.SetFocus();//設置Edit焦點m_edit.ShowCaret();//顯示光標m_edit.SetSel(-1);//將光標移動到最后}*pResult = 0;
此時變可以使你的edit控件獲得并且修改原來的數(shù)值,但是還無法保存包CListCtrl中,所以需要第四步:
響應 之前創(chuàng)建的那個edit的EN_KILLFOCUS消息,也就是失去編輯框焦點時的消息處理,此時應該把edit中的數(shù)據(jù)寫到之前用戶所點擊的位置中,在該消息的處理函數(shù)中寫入:
CString tem;m_edit.GetWindowText(tem); //得到用戶輸入的新的內容m_listCtrl.SetItemText(m_Row,m_Col,tem); //設置編輯框的新內容m_edit.ShowWindow(SW_HIDE); //應藏編輯框

此時你所雙擊的CListCtrl中的內容就會被更新了
愛華網(wǎng)



