博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ListControl]MFC中实现list控件的编辑操作
阅读量:5837 次
发布时间:2019-06-18

本文共 2467 字,大约阅读时间需要 8 分钟。

最近一直没睡好觉,彻底成了夜猫子一个,

最近用了两天时间做了个数据库课程设计,总体说是完成得还好,不过后面回想一下的话就是太简单了点。

这次做的是报刊订购系统,具体流程就不多说了,反正也就连接数据库,操纵各种数据,

得到的数据是显示在ListControl控件上的,由于我有个功能是想实现即时对List控件的编辑,所以上网找了一下方法,发现了这样的一篇文章:

我根据自己的需要做了一下改动

我自己的最终实现的方法就是,

生成一个新的子类继承于CListCtrl

1 class CEditListCtrl : public CListCtrl

下面是响应控件的点击事件OnLButtonDown

具体流程如下

代码如下

1 void CEditListCtrl::OnLButtonDown(UINT nFlags, CPoint point) 2 { 3     // TODO: 在此添加消息处理程序代码和/或调用默认值 4  5     m_bFocus = TRUE; 6     LVHITTESTINFO  lvhit; 7     lvhit.pt = point; 8     int item = SubItemHitTest(&lvhit); 9 10     //if (over a item/subitem)11     if (item != -1 && (lvhit.flags & LVHT_ONITEM))12     {13         CListCtrl::OnLButtonDown(nFlags, point);14 15         if(m_bHighLight && m_iItem == item )16         {17             //第二次单击18             m_edtItemEdit.ShowWindow(SW_SHOW);19             m_edtItemEdit.SetFocus();20             //m_edtItemEdit.SetSel(-1);21             return;22         }23         else24         {25             //第一次单击26             if(m_editCreate)27             {28                 m_edtItemEdit.ShowWindow(SW_HIDE);29                 SetListText();30                 m_edtItemEdit.SetWindowTextW(NULL);31             }32             m_iItem =item;33             m_iSubItem = lvhit.iSubItem;34             m_bHighLight = TRUE;35 36 37 38         }39     }40     else41     {42         if(m_edtItemEdit.m_hWnd == NULL)43         {44             //未出现文本编辑框时45             m_bHighLight = FALSE;46         }47 48         CListCtrl::OnLButtonDown(nFlags, point);49     }50 51     Invalidate(); //强制重绘控件52 53     if (m_iSubItem >= 0)54     {55         if(m_iItem != item) return;56         CRect  rcSubItem;57         m_iSubItem=2;58         GetSubItemRect( item, m_iSubItem, LVIR_BOUNDS, rcSubItem);59 60         //get edit control and subclass61 62         if(!m_editCreate)63 64         {65             if(m_edtItemEdit.Create(WS_CHILD|WS_VISIBLE|WS_BORDER,rcSubItem,this,IDC_EDIT))66                 m_editCreate=TRUE;67             m_edtItemEdit.SetFocus();68             m_edtItemEdit.ShowWindow(SW_HIDE);69         }70         //ASSERT(hWnd != NULL);71         //VERIFY(m_edtItemEdit.SubclassWindow(hWnd));72 73         //move edit control text 4 pixel to the right of org label,74         //as Windows does it...编辑框定位75         rcSubItem.left += 4;76         m_edtItemEdit.MoveWindow (&rcSubItem) ;77         m_edtItemEdit.SetWindowText(GetItemText(item, m_iSubItem));78     }79 80 }

注:本人的代码是只能修改列号为2的单元格

转载地址:http://qxucx.baihongyu.com/

你可能感兴趣的文章
实验二
查看>>
独立开发一个云(PaaS)的核心要素, Go, Go, Go!!!
查看>>
MyBatis使用DEMO及cache的使用心得
查看>>
网站文章如何能自动判定是抄袭?一种算法和实践架构剖析
查看>>
【OpenCV学习】滚动条
查看>>
ofo用科技引领行业进入4.0时代 用户粘性连续8个月远甩摩拜
查看>>
兰州青年志愿者“中西合璧”玩快闪 温暖旅客回家路
查看>>
计划10年建10万廉价屋 新西兰政府:比想象中难
查看>>
甘肃发首版《3D打印职业教育教材》:校企合作育专才
查看>>
李娜入选国际网球名人堂 成亚洲第一人
查看>>
为找好心人抚养孩子 浙江一离婚父亲将幼童丢弃公园
查看>>
晚婚晚育 近20年巴西35岁以上孕妇增加65%
查看>>
读书:为了那个美妙的咔哒声
查看>>
jsp改造之sitemesh注意事项
查看>>
SpringBoot-Shiro使用
查看>>
iOS 9.0之后NSString encode方法替换
查看>>
解决 ThinkPHP5 无法接收 客户端 Post 传递的 Json 参数
查看>>
ASMFD (ASM Filter Driver) Support on OS Platforms (Certification Matrix). (文档 ID 2034681.1)
查看>>
CRM Transaction处理中的权限控制
查看>>
[转]linux创建链接文件的两种方法
查看>>