可编辑的 ListCtrl 封装整合
2015-10-18 15:29
495 查看
网上下了一个源码,但是封装不太好,太多代码在dialog中,重新整合了一下
1.代码目录梳理
$(ProjectDir)/EditListCtrl
----inc,头文件
----src,源文件
2.继承CEditListCtrl :CListCtrl,复写PreSubClassWindow,并利用反射,添加其单击及双击响应消息,使这段代码与dialog脱离,完善封装
$(ProjectDir)/EditListCtrl/inc//EditListCtrl.h
$(ProjectDir)/EditListCtrl/inc//EditListCtrl.cpp
代码下载:含一个工程和示例主程序
http://download.csdn.net/detail/silyvin/9191243
1.代码目录梳理
$(ProjectDir)/EditListCtrl
----inc,头文件
----src,源文件
2.继承CEditListCtrl :CListCtrl,复写PreSubClassWindow,并利用反射,添加其单击及双击响应消息,使这段代码与dialog脱离,完善封装
$(ProjectDir)/EditListCtrl/inc//EditListCtrl.h
#include "ListCtrlDateEdit.h" #include "ListCtrlEdit.h" #include "ListCtrlComboBox.H" #include "ListCtrlMaskEdit.H" #include "ListCtrlCurrencyEdit.H" class CEditListCtrl : public CListCtrl { public: DECLARE_MESSAGE_MAP() void PreSubclassWindow(); void OnClickList(NMHDR* pNMHDR, LRESULT* pResult); void OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult); public: CListCtrlCurrencyEdit m_ListCurrencyEdit; CListCtrlMaskEdit m_ListMaskEdit; CListCtrlDateEdit m_ListDateEdit; CListCtrlEdit m_ListEdit; CListCtrlComboBox m_ListComboBox; };
$(ProjectDir)/EditListCtrl/inc//EditListCtrl.cpp
#include "StdAfx.h" #include "EditListCtrl.h" BEGIN_MESSAGE_MAP(CEditListCtrl, CListCtrl) ON_NOTIFY_REFLECT(NM_CLICK, OnClickList) ON_NOTIFY_REFLECT(NM_DBLCLK, OnDblclkList) END_MESSAGE_MAP() void CEditListCtrl::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) { CListCtrlEditBase::OnOpen(this, pNMHDR); *pResult = 0; } void CEditListCtrl::OnClickList( NMHDR* pNMHDR, LRESULT* pResult ) { int nItem, nSubItem; if (CListCtrlEditBase::HitTestEx(this, pNMHDR, nItem, nSubItem) && nSubItem == 4) { m_ListComboBox.ShowEdit(nItem, nSubItem); } *pResult = 0; } void CEditListCtrl::PreSubclassWindow() { ModifyStyle(0 , LVS_REPORT); SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); CImageList imagelist; int itemheight = 18; imagelist.Create(1, itemheight, ILC_COLOR4, 10, 10); SetImageList(&imagelist, LVSIL_SMALL); }
代码下载:含一个工程和示例主程序
http://download.csdn.net/detail/silyvin/9191243
相关文章推荐
- 【黑马训练营】IOS C语言指针
- 求和为0的最长序列
- 在KEIL中建立了工程之后,编译就出现这样的提示can't execute 'C:\Keil\C51\BIN\A51.EXE'
- Swift - 操作SQLite数据库(引用SQLite3库)
- MFC中的Invalidate、OnDraw、OnPaint函数的作用、区别和联系
- 2016-我的求职之路
- 使用JNDI连接数据库
- c_select 调用参数说明
- Handler的简单使用介绍
- Redis GEO 特性简介
- geohash算法原理及实现方式
- oracle的单行函数以及多行函数(聚合函数、分组函数)的使用
- 堆排算法的分析与总结
- ubuntu vi编辑insert时上下左右建为ABCD
- 数据结构总结
- Java并发编程:Callable、Future和FutureTask
- UI - XMLParser
- 新项目启动
- Round Robin WRR DRR MiDRR WFQ
- ios开发之AppDelegate