可编辑的CListCtrl(最简单的最基本的编辑)

参考:http://www.cnblogs.com/tianlangshu/archive/2011/03/20/1989421.html

该方法只是最简单最基本的编辑,若想直接用于复杂编辑,可继承CListCtrl,或者去下载别人已经封装好类。。。


首先,添加一个editbox,和一个CListCtrl,声明控件变量,

CListCtrl m_ctrlListMapSheetIndex;
CEdit m_ctrlEdit;


初始化时:
m_ctrlEdit.ShowWindow(SW_HIDE);
m_ctrlEdit.SetParent(&m_ctrlListMapSheetIndex);

//关于CListCtrl的样式,可根据需要设置
DWORD dwStyle = m_ctrlListMapSheetIndex.GetExtendedStyle();
dwStyle |= LVS_EX_FULLROWSELECT;//选中某行使整行高亮(只适用与report风格的listctrl)
dwStyle |= LVS_EX_GRIDLINES;//网格线(只适用与report风格的listctrl)
dwStyle |= LVS_EX_DOUBLEBUFFER;//内部双缓冲,防止list闪烁
m_ctrlListMapSheetIndex.SetExtendedStyle(dwStyle); //设置扩展风格

void StartToEdit()
{// 其中 m_nRow,m_nColoum为第几行,第几列
    CRect rc;
    m_ctrlListMapSheetIndex.GetSubItemRect(m_nRow, m_nColoum, LVIR_LABEL,rc);//取得子项的矩形
    rc.left+=3;
    rc.top+=2;
    rc.right+=3;
    rc.bottom+=2;
   
    CString strText = m_ctrlListMapSheetIndex.GetItemText(m_nRow,m_nColoum);//取得子项的内容
    m_ctrlEdit.SetWindowText(strText);//将子项的内容显示到编辑框中
    m_ctrlEdit.ShowWindow(SW_SHOW);//显示编辑框
    m_ctrlEdit.MoveWindow(&rc);//将编辑框移动到子项上面,覆盖在子项上
    m_ctrlEdit.SetFocus();//使编辑框取得焦点
    m_ctrlEdit.CreateSolidCaret(1,rc.Height() - 5);//创建一个光标
    m_ctrlEdit.ShowCaret();//显示光标
    m_ctrlEdit.SetSel(-1);//使光标移到最后面
}

然后,添加CEdit失去焦点时的消息EN_KILLFOCUS。在该消息中添加代码使编辑框中的内容更新到CListCtrl中。
///
CString strText;
m_ctrlEdit.GetWindowText(strText);//取得编辑框的内容
strText.Trim();
m_ctrlListMapSheetIndex.SetItemText(m_nRow,m_nColoum,strText);//将该内容更新到CListCtrl中
m_ctrlEdit.ShowWindow(SW_HIDE);//隐藏编辑框
/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值