免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编辑子项的CListCtrl类作者:Nobita关键词:可编辑子项 CListCtrl摘 要:本文对CListCtrl控件进行了一个扩展,使它即可以编辑主项(Item),又可以编辑子项(SubItem),并尽量符合CListCtrl的操作习惯。 一、说明大家都知道在MFC中通过给CListCtrl设置LVS_EDITLABELS属性,并且在程序中响应控件的LVN_ENDLABELEDIT消息可以修改列表控件每一行的第一项,也就是主项(Item)。代码如下:void CEditListCtrlSampleDlg:OnEndlabeleditList1(NMHDR* pNMHDR, LRESULT* pResult) LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;/ TODO: Add your control notification handler code here*pResult = TRUE; /TRUE值表示可以修改主项,FALSE值表示不修改主项但是让人郁闷的是,微软留了一手,CListCtrl不支持直接修改子项(SubItem)。无奈之下只好自力更生,对CListCtrl进行扩展。_nmcd.dwDrawStage = CDDS_PREPAINT)*pResult = CDRF_NOTIFYITEMDRAW;else if (pNMLVCustomDraw-nmcd.dwDrawStage = CDDS_ITEMPREPAINT)/ This is the notification message for an item. Well request/ notifications before each subitems prepaint stage.*pResult = CDRF_NOTIFYSUBITEMDRAW;else if (pNMLVCustomDraw-nmcd.dwDrawStage = (CDDS_ITEMPREPAINT | CDDS_SUBITEM)/当前要绘制的主项标识符和子项标识符int iItem = (int)pNMLVCustomDraw-nmcd.dwItemSpec;int iSubItem = pNMLVCustomDraw-iSubItem;CDC* pDC = CDC:FromHandle(pNMLVCustomDraw-nmcd.hdc);CString strItemText = GetItemText(iItem, iSubItem);CRect rcItem, rcText;GetSubItemRect(iItem, iSubItem, LVIR_LABEL, rcItem);rcText = rcItem;CSize size = pDC-GetTextExtent(strItemText);if(strItemText = _T()size.cx = 41; /设置文本高亮矩形rcText.left += 4;rcText.right = rcText.left + size.cx + 6;if(rcText.right rcItem.right)rcText.right = rcItem.right;COLORREF crOldTextColor = pDC-GetTextColor();/绘制项焦点/高亮效果if(m_bFocus)if(m_iItem = iItem) & (m_iSubItem = iSubItem)if(m_bHighLight)pDC-SetTextColor(:GetSysColor(COLOR_HIGHLIGHTTEXT);pDC-FillSolidRect(&rcText, :GetSysColor(COLOR_HIGHLIGHT);pDC-DrawFocusRect(&rcText);/绘制项文本rcItem.left += 6;pDC-DrawText(strItemText, &rcItem, DT_LEFT | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS | DT_NOCLIP);pDC-SetTextColor(crOldTextColor);*pResult = CDRF_SKIPDEFAULT;/ Weve painted everything.单击一次文本高亮,再单击一次文本开始编辑在WM_LBUTTONDOWN消息处理中实现:void CEditListCtrl:OnLButtonDown(UINT nFlags, CPoint point) m_bFocus = TRUE;LVHITTESTINFO lvhit;lvhit.pt = point;int item = SubItemHitTest(&lvhit);/if (over a item/subitem)if (item != -1 & (lvhit.flags & LVHT_ONITEM)CListCtrl:OnLButtonDown(nFlags, point);if(m_bHighLight & m_iItem = lvhit.iItem & m_iSubItem = lvhit.iSubItem) /第二次单击EditLabel(m_iItem);return;else /第一次单击m_iItem = lvhit.iItem;m_iSubItem = lvhit.iSubItem;m_bHighLight = TRUE;elseif(m_edtItemEdit.m_hWnd = NULL) /未出现文本编辑框时m_bHighLight = FALSE;CListCtrl:OnLButtonDown(nFlags, point);Invalidate(); /强制重绘控件关键的一步,对项文本进行编辑。在以上代码中当执行到EditLabel时将会产生一个编辑框,这时需要将它进行子类化处理,以控制它出现的位置。void CEditListCtrl:OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;if (m_iSubItem = 0) ASSERT(m_iItem = pDispInfo-item.iItem);CRect rcSubItem;GetSubItemRect( pDispInfo-item.iItem, m_iSubItem, LVIR_BOUNDS, rcSubItem);/get edit control and subclassHWND hWnd= (HWND)SendMessage(LVM_GETEDITCONTROL);ASSERT(hWnd != NULL);VERIFY(m_edtItemEdit.SubclassWindow(hWnd);/move edit control text 4 pixel to the right of org label,/as Windows does it.编辑框定位m_edtItemEdit.m_iXPos = rcSubItem.left + 4;m_edtItemEdit.SetWindowText(GetItemText(pDispInfo-item.iItem, m_iSubItem);*pResult = 0;void CEditListCtrl:OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;LV_ITEM*plvItem = &pDispInfo-item;if (m_iSubItem = 0)if (plvItem-pszText != NULL )SetItemText(plvItem-iItem,m_iSubItem, plvItem-pszText);VERIFY(m_edtItemEdit.UnsubclassWindow()!=NULL);*pResult = 0;/编辑文本时对控件父窗口操作(如单击其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危险废物贮存管理的63个要点
- 2026年中国贸易行业发展展望及投资策略报告
- 3000ta阻燃母粒建设项目环境影响报告表
- 2025-2026学年度河北省邯郸市滏春中学高二上学期期中考试历史试题(含答案)
- 编制设计概论试题及答案
- 2025年藏文基础知识题库及答案
- 2025年代谢组学技术题库及答案
- 2025年大专动物解剖题库及答案
- 2025年魅力销售专员岗位招聘面试参考题库及参考答案
- 2025年汽车电子工程师岗位招聘面试参考试题及参考答案
- 港式室内设计风格解析
- 外研社英语一年级起点五年级上册知识点总结 重点句型 课文讲解
- 生物质燃料颗粒可行性研究报告
- 《资产负债表(适用执行民间非营利组织会计制度的组织)》
- 《发票发票知识培训》课件
- 2024年秋季新版苏科版八年级上册物理课件 跨学科实践 乐器的调查与制作
- 民兵潜力数据调查培训
- 辽海版综合实践活动七年级上册同步课件教案81用好电子小帮手之活动一电子产品走近你我他
- 离职员工不损害公司声誉保证书
- 3.8 第1课时弧长的计算 浙教版数学九年级上册课件
- 初中语+文+第9课《从百草园到三味书屋》课件+统编版语文七年级上册
评论
0/150
提交评论