List Control可编辑item文本(只支持第一列)

来源:互联网 发布:大数据与精准医疗 ppt 编辑:程序博客网 时间:2024/05/23 11:50

 

List Control可编辑item文本(只支持第一列)

 

邵盛松 2010年11月19星期五

 

下载地址 http://download.csdn.net/source/2845555

 

一 属性设置

Edit Labels属性设置为True,可以就地编辑项文本,仅仅设置个属性是不够的。

View属性设置为Report或者是List

View的属性为Report的时候只能编辑第一列

 

List Control的初始化

 

     m_List_ctlDemo.InsertColumn(0, L"编号", LVCFMT_LEFT, 100);

     m_List_ctlDemo.InsertColumn(1, L"水果", LVCFMT_LEFT, 100);

     m_List_ctlDemo.InsertColumn(2, L"产地", LVCFMT_LEFT, 100);

 

     m_List_ctlDemo.InsertItem(0,L"1");

     m_List_ctlDemo.SetItemText(0,1,L"苹果");

     m_List_ctlDemo.SetItemText(0,2,L"北方");

 

     m_List_ctlDemo.InsertItem(1,L"2");

     m_List_ctlDemo.SetItemText(1,1,L"橘子");

     m_List_ctlDemo.SetItemText(1,2,L"南方");

 

三 添加控件事件NM_DBLCLK

 

双击发送NM_DBLCLK

void CListDemoDlg::OnNMDblclkListDemo(NMHDR *pNMHDR, LRESULT *pResult)

{

     // TODO: 在此添加控件通知处理程序代码

 

     POSITION pos = m_List_ctlDemo.GetFirstSelectedItemPosition();

     int nIndex = m_List_ctlDemo.GetNextSelectedItem(pos);

 

     if (nIndex>=0)

     {

         m_List_ctlDemo.SetFocus();

         CEdit* pEdit = m_List_ctlDemo.EditLabel( nIndex );

     }

     *pResult = 0;

 

}

四 添加控件事件LVN_ENDLABELEDIT

 

在结束某项编辑字符时发送LVN_ENDLABELEDIT

void CListDemoDlg::OnLvnEndlabeleditListDemo(NMHDR *pNMHDR, LRESULT *pResult)

{

     NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNMHDR);

     // TODO: 在此添加控件通知处理程序代码

     CString strName = pDispInfo->item.pszText;

     int nIndex = pDispInfo->item.iItem;

     m_List_ctlDemo.SetFocus();

 

     if((!strName.IsEmpty()) && nIndex>= 0)

     {

         m_List_ctlDemo.SetItemText( nIndex, 0, strName);

     }

 

     *pResult = 0;

 

}

 

以上程序在 VC++2005 Unicode字符集下调试通过