MFC list control控件数据修改

MFC listcontral控件 创建和添加数据
MFC list控件 从文件中添加保存数据项

先给list control控件添加拓展风格

m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
//选中行高亮和分割线

添加风格后效果如图

添加一个editControl控件,命名为m_edit,默认是Control变量;在OnInitDialog()方法里隐藏m_edit.ShowWindow(SW_HIDE);

在Dlg类中定义三个变量

int m_Row;//鼠标选中的行号
int m_Col;//鼠标选中的列号
CString m_strListItem;//鼠标选中的那一项的数据

使用类向导添加list control控件的双击消息响应函数

void Clist控件Dlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
CRect rc;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
m_Row = pNMListView->iItem;//每一行的item从零开始,双击选中行号
m_Col = pNMListView->iSubItem;//每一行中的列就是SubItem也是从零开始,获得选中列号

if (m_Col != -1&&m_Col>1)//选择子项,
{

m_list.GetSubItemRect(m_Row, m_Col, LVIR_LABEL, rc);//获得列表视图控件中的项的边框矩形
m_edit.SetParent(&m_list);
m_edit.MoveWindow(rc);
m_edit.SetWindowText(m_list.GetItemText(m_Row, m_Col));//设置选中框的数值(由用户输入 )
m_edit.ShowWindow(SW_SHOW);//显示在窗口中
m_edit.SetFocus();//设置edit焦点
m_edit.ShowCaret();//显示光标
m_edit.SetSel(-1); //-1选择编辑控件中的所有文本

}

*pResult = 0;
}

因为前两项是英雄名称和职业这个基本是不会更改的,要有改动的是后面两项价格,所以加了一个m_Col>1的判断。

但是此时只能实现edit控件中的数值修改不能实现保存,所以在edit控件中添加killfocus函数

(该edit控件的ID是IDC_EDIT5)

void Clist控件Dlg::OnKillfocusEdit5()
{
// TODO: 在此添加控件通知处理程序代码
m_edit.GetWindowText(m_strListItem);//获取修改后编辑框中的数据
m_list.SetItemText(m_Row, m_Col, m_strListItem);
int price = _wtoi(m_strListItem);   
        //判断修改的是金币价格还是点券价格
if (m_Col == 2)
heroVector[m_Row].Price_God = price;
if(m_Col==3)
heroVector[m_Row].Price_Tickets = price;
m_edit.ShowWindow(SW_HIDE);
}

heroVector中元素的顺序和list control中显示的顺序是一致的,这就是为什么要添加一个全局变量count来控制给list control控件添加项的时候都是从末尾插入。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值