为CListCtrl添加item编辑功能

19 篇文章 0 订阅

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、结束.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值