为CListCtrl添加item编辑功能

本文详细介绍了如何在C++应用中使用CListCtrl和CEdit控件进行文件列表浏览与文本内容显示的交互操作,包括初始化控件、双击事件处理以及文本编辑功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在dlg窗体添加一个CListCtrl 和一个CEdit
2、为此两控件对应绑定两成员变量,如下
CListCtrl m_List;
CEdit m_cTextEdit;
3、在dlg.h头文件添加两似有成员变量
private:
 int m_nRow;
 int m_nCol;

4、在oninitdialog初始化化listctrl 和edit
 // 设置接收文件列表风格
 LONG lStyle;
 lStyle = GetWindowLong(m_List.m_hWnd, GWL_STYLE);
 lStyle |= LVS_REPORT;
 SetWindowLong(m_List.m_hWnd, GWL_STYLE, lStyle);

 DWORD dwStyle = m_List.GetExtendedStyle();
 dwStyle |= LVS_EX_FULLROWSELECT;
 dwStyle |= LVS_EX_GRIDLINES;
 m_List.SetExtendedStyle(dwStyle); 
 
 // 初始化列表头信息
 m_List.InsertColumn( em_LIST_ITEM_KEY, "Key", LVCFMT_LEFT, 140 );
 m_List.InsertColumn( em_LIST_ITEM_VALUE, "Value", LVCFMT_LEFT, 200 );

 m_cTextEdit.ShowWindow( SW_HIDE );

5、为CListCtrl添加双击事件处理
void CXXXDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
 // TODO: Add your control notification handler code here
 char ach[MAX_LISTITME_LEN] = {0};
 CRect cRectItem;
 CRect cRectList;

 NM_LISTVIEW* pNMListView = ( NM_LISTVIEW* )pNMHDR;
 
 if ( -1 != pNMListView->iItem )
 {
  m_nRow = pNMListView->iItem;
  m_nCol = pNMListView->iSubItem;

  //过滤key,key不允许修改
  if ( 0 == m_nCol)
  {
   *pResult = 0;
   return;
  }

  m_List.GetSubItemRect( pNMListView->iItem, pNMListView->iSubItem, LVIR_LABEL, cRectItem );
  m_List.GetWindowRect( &cRectList );
  ScreenToClient( &cRectList );

  cRectItem.left   += cRectList.left + 3;
  cRectItem.top    += cRectList.top;
  cRectItem.right  += cRectList.left + 3;
  cRectItem.bottom += cRectList.top + 3;

  m_List.GetItemText( pNMListView->iItem, pNMListView->iSubItem, ach, MAX_LISTITME_LEN);
  m_cTextEdit.SetWindowText( ach );
  m_cTextEdit.ShowWindow( SW_SHOW );
  m_cTextEdit.MoveWindow( &cRectItem );
  m_cTextEdit.SetFocus();
  m_cTextEdit.CreateSolidCaret( 1, cRectItem.Height() - 5 );
  m_cTextEdit.ShowCaret();
  m_cTextEdit.SetSel( -1 );

 }

 *pResult = 0;
}


6、为m_cTextEdit添加光标消失事件处理
void CXXXDlg::OnKillfocusEditText()
{
 // TODO: Add your control notification handler code here
 CString cstrText = "";

 m_cTextEdit.GetWindowText( cstrText );
 m_List.SetItemText( m_nRow, m_nCol, cstrText );

 m_cTextEdit.ShowWindow(SW_HIDE);
}

7、结束.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值