小米note拆机换屏触屏怎么拆

可编辑子项ListCtrl控件的完整实现(1)
源码下载:&&
&MFC提供的ListCtrl控件本身是不具备编辑子项功能的,我们现在建立一个可编辑子项的ListCtrl控件用于记录人员的名字、年龄、性别。其中,双击年龄项会出现EditBox让用户编辑修改年龄,双击性别项会出现ComboBox让用户选择性别。
&实现如下:
&我们需要实现3个类:CEditableListCtrl继承自CListCtrl,CListCtrlEdit继承自CEdit,CListCtrlCombo继承自CComboBox。CListCtrlEdit和CListCtrlCombo是CEditableListCtrl要用到的EditBox和ComboBox控件的类,这两个类非常简单,就是在失去焦点时向父窗口CEditableListCtrl发送消息通知。
一、CEditableListCtrl
注意新增部分
1、鼠标双击消息WM_LBUTTONDBLCLK
如果双击的是年龄项就显示EditBox供用户编辑修改,如果双击的是性别项就显示ComboBox供用户选择修改。
2、开始拖动表头消息HDN_BEGINTRACKA
响应EditBox和ComboBox失去焦点的事件
3、水平与垂直滚动条拖动事件
响应EditBox和ComboBox失去焦点的事件
4、ComboBox与EditBox失去焦点响应
CListCtrlEdit类和CListCtrlCombo类中,在失去焦点时会向父窗口发送自定义消息,以下消息处理函数就是用于处理这两个消息。
#define WM_USER_EDIT_END
&WM_USER+101
#define WM_USER_COMBO_END
WM_USER+102
ON_MESSAGE(WM_USER_EDIT_END,
OnEditEnd)
ON_MESSAGE(WM_USER_COMBO_END,
OnComboEnd)
5、ShowEdit与ShowCombo
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。网站已改版,请使用新地址访问:
ListCtrlCl 很好的一个 控件,内有设置列宽,行高,文字的大小颜色 View- Box 238万源代码下载-
&文件名称: ListCtrlCl
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 6 KB
&&上传时间:
&&下载次数: 42
&&提 供 者:
&详细说明:很好的一个ListCtrl控件,内有设置列宽,行高,文字的大小颜色-Good ListCtrl control to set the column width and row height, the size of the color of the text
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&ListCtrlCl\ListCtrlCl.cpp&&..........\ListCtrlCl.h&&..........\HeaderCtrlCl.cpp&&..........\HeaderCtrlCl.h&&ListCtrlCl
&近期下载过的用户:
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 超宽带雷达信号二维FFT求速度和距离,速度补偿后的算法
&[] - C的ADC信号采集,P1.0引脚输入。采集信号右对齐。
&[] - Keitley das1700/das1800系列主板的驱动程序,有用到的朋友可以下载!
&[] - List控件分页显示,尤其是针对从数据读取大量数据是,效果很好。vc++
&[] -  对CListCtrl列表控件进行了一个功能扩展,使它支持双击鼠标实现编辑主项(Item),也可以编辑子项(SubItem),并尽量符合CListCtrl的操作习惯。这个对VC的爱好者们应该很有用,必竟双击编辑已经让我们大部分人感觉很习惯了,因此这个功能的加入是符合注流的
&[] - 扩展的listctrl控件,列表行中可粘贴进度条,文本框等其他控件,是学习listctrl的好例子
&[] - 在CListCtrl控件添加按钮,希望和大家交流交流,这个问题困扰了我好久
&[] - 功能非常强大的CListCtrl.
&[] - ListView透明自绘,文件中有编译好的exe可以查看。
&[] - 一个可编辑的Listctrl控件类,希望能对大家有用VC++学习(101)
=============================================================
标题:ListCtrl控件的简单使用
备注 Windows CE 5.0
姓名:朱铭雷
=============================================================
&&& 1 头文件中声明一个CImageList对象指针,该对象用来存储ListCtrl控件所要使用的图标。
CImageList * m_pImageL
&&& 2 动态创建一个CImageList对象。此处要注意图标的大小,32*32的图标Report视图将不能够使用。
m_pImageList = new CImageList();
m_pImageList-&Create(16,16,TRUE,4,4);
&&& 3 为m_pImageList加载图标
CListCtrlNTApp *pA
pApp = (CListCtrlNTApp *)AfxGetApp();
m_pImageList-&Add(pApp-&LoadIconW(IDI_ICON1));
m_pImageList-&Add(pApp-&LoadIconW(IDI_ICON2));
m_pImageList-&Add(pApp-&LoadIconW(IDI_ICON3));
m_pImageList-&Add(pApp-&LoadIconW(IDI_ICON4));
&&& 4 在对话框中放置一个ListCtrl控件,并将ID设置为:IDC_LISTCTRL
&&& 5 通过代码设置ListCtrl控件新属性,注意只改变自己关心的属性,如下面这种方式:
long lMask = LVS_SINGLESEL | LVS_EDITLABELS | LVS_NOLABELWRAP | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | LVS_ICON | LVS_SMALLICON | LVS_REPORT | LVS_LIST |
&LVS_SORTASCENDING | LVS_SORTDESCENDING | LVS_ALIGNLEFT;
lStyle = 0;
lStyle |= LVS_SINGLESEL; //设置单选属性
lStyle |= LVS_EDITLABELS; //可以编辑标签
lStyle |= LVS_REPORT; //设置为报表样式
lStyle |= LVS_SORTASCENDING; //升序排列
lStyle |= LVS_ALIGNLEFT; //左对齐
CListCtrl * pListCtrl = (CListCtrl *)GetDlgItem(IDC_LISTCTRL);
long lNewStyle = GetWindowLong(pListCtrl-&m_hWnd,GWL_STYLE);
lNewStyle &= ~lM
lNewStyle = lNewStyle | lS
&&& 6 以指定样式重新创建ListCtrl控件,并设置该控件的图标列表。
GetClientRect(&rect);
pListCtrl-&DestroyWindow();
pListCtrl-&Create(lNewStyle,rect,this,IDC_LISTCTRL); //创建列表视图控件
pListCtrl-&SetImageList(m_pImageList,LVSIL_SMALL); //设置列表视图控件的图标列表
&&& 7 定义列表视图的列并向列表视图里添加内容
&&& TCHAR rgtsz[2][10];
&&& _tcscpy(rgtsz[0],_T(&书名&));
&&& _tcscpy(rgtsz[1],_T(&作者&));
&&& TCHAR rgtszIconType[4][12];
&&& _tcscpy(rgtszIconType[0],_T(&vc++技术内幕&));
&&& _tcscpy(rgtszIconType[1],_T(&windows程序设计&));
&&& _tcscpy(rgtszIconType[2],_T(&c++ primer&));
&&& _tcscpy(rgtszIconType[3],_T(&深入浅出MFC&));
&&& TCHAR rgtszIconDescrip[4][50];
&&& _tcscpy(rgtszIconDescrip[0],_T(&David Kruglinski&));
&&& _tcscpy(rgtszIconDescrip[1],_T(&CharlesPetzold&));
&&& _tcscpy(rgtszIconDescrip[2],_T(&Lippman&));
&&& _tcscpy(rgtszIconDescrip[3],_T(&侯捷&));
&&& //定义列表视图的列
&&& LV_COLUMN
&&& for(i=0; i&2; i++)
&&&&&&& lvcolumn.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
&&&&&&& lvcolumn.fmt = LVCFMT_LEFT;
&&&&&&& lvcolumn.pszText = rgtsz[i];
&&&&&&& lvcolumn.iSubItem =
&&&&&&& lvcolumn.cx = rect.Width()/2;
&&&&&&& pListCtrl-&InsertColumn(i,&lvcolumn);
&&& //向列表视图里添加内容
&&& int iItem, iSubItem, iActualItem, iI
&&& LV_ITEM
&&& for(iItem=0; iItem&4; iItem++)
&&&&&&& for(iSubItem=0; iSubItem&2; iSubItem++)
&&&&&&&&&&& lvitem.mask = LVIF_TEXT | (iSubItem == 0? LVIF_IMAGE: 0);
&&&&&&&&&&& lvitem.iItem = (iSubItem == 0)? iItem: iActualI
&&&&&&&&&&& lvitem.iSubItem = iSubI
&&&&&&&&&&& lvitem.pszText = iSubItem == 0? rgtszIconType[iItem]:rgtszIconDescrip[iItem];
&&&&&&&&&&& lvitem.iImage = iI
&&&&&&&&&&& //判断,如果是添加第列,则应该添加一行,否则只要设置这一行即可
&&&&&&&&&&& if(0 == iSubItem)
&&&&&&&&&&&&&&& iActualItem = pListCtrl-&InsertItem(&lvitem);
&&&&&&&&&&& else
&&&&&&&&&&&&&&& pListCtrl-&SetItem(&lvitem);
&&& 8 设置ListCtrl控件具有CheckBox。
pListCtrl-&SetExtendedStyle(LVS_EX_CHECKBOXES);
&&& 9 添加对话框WM_DESTROY消息的响应函数,并在其中销毁动态创建的CImageList对象。
delete m_pImageL
m_pImageList = NULL;
&&& 10 添加ListCtrl控件的NM_DBLCLK事件响应函数,在该响应函数中判断当前选中行的索引,并输出到IDE环境。
CListCtrl * pListCtrl = (CListCtrl *)GetDlgItem(IDC_LISTCTRL);
for(int i=0; i&pListCtrl-&GetItemCount(); i++ )
&& if( pListCtrl-&GetItemState(i, LVIS_SELECTED) == LVIS_SELECTED || pListCtrl-&GetCheck(i))
&&&&&&& str.Format(_T(&第%d行的checkbox为选中状态/n&), i);
&&&&&&& TRACE(str);
&&& 11 ListCtrl控件的使用效果如图:
&&& 双击“C++ Primer”,IDE输出窗口输出:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1057082次
积分:10661
积分:10661
排名:第1421名
原创:58篇
转载:455篇
评论:113条
(1)(4)(6)(1)(1)(10)(18)(1)(19)(5)(5)(7)(2)(33)(55)(3)(3)(7)(23)(55)(87)(76)(24)(31)(37)ListCtrl中HeaderCtrl的失效问题-世界计算机-
您的位置: &
ListCtrl中HeaderCtrl的失效问题
16:15   来源:csdn
曾经做过让某列HeaderCtrl失效的功能,主要是想保持HeaderCtrl宽度不变,方法是重载ListCtrl的虚函数OnNotify,在这个函数中判断某个列的索引iSubItem,如果是要失效的HeaderCtrl则设置*iResult = TRUE表示消息不再往下处理,同时return,代码如下:BOOL CStyleList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: Add your specialized code here and/or call the base class NMHEADER* pNMHeader = (NMHEADER*)lP if (pNMHeader->iItem == 0) {
*pResult = TRUE;
return TRUE; }
return CListCtrl::OnNotify(wParam, lParam, pResult);}其结果是,被失效的HeaderCtrl向ListCtrl发送的所有通知消息都不被处理,导致对HeaderCtrl的拉动、拖拽等功能将全部失效。现在,我要做一个很简单的功能:在这个失效HeaderCtrl上设置一个位图图标,由于这个HeaderCtrl的通知消息全部都不被ListCtrl处理,设置位图的操作因此也失效了,是需要改进代码的时候了:BOOL StyleList::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // TODO: Add your specialized code here and/or call the base class NMHEADER* pNMHeader = (NMHEADER*)lP if (pNMHeader->iItem == 0 && ((pNMHeader->hdr.code == HDN_BEGINTRACKW) | (pNMHeader->hdr.code == HDN_DIVIDERDBLCLICKW))) {
*pResult = TRUE;
return TRUE; }
return CListCtrl::OnNotify(wParam, lParam, pResult);}保持HeaderCtrl宽度不变,当然是不能随意左右拉动HeaderCtrl。除此之外,我注意到当在两个HeaderCtrl之间双击也会造成HeaderCtrl的宽度变化,因此,需要屏蔽这两个通知消息码:HDN_BEGINTRACKW : 当开始调整HeaderCtrl宽度时HDN_DIVIDERDBLCLICKW:当在两个HeaderCtrl之间双击改变HeaderCtrl宽度时 </
关键词: && && && &&
&& 文章“ListCtrl中HeaderCtrl的失效问题”
1、凡本网注明“世界经理人”或者“世界计算机”的作品,未经本网授权不得转载,经本网授权的媒体、网站,在使用时须注明稿件来源:“世界经理人”或者“世界计算机”,违反者本网将依法追究责任。
2、凡注明“来源:xxx(非本站)”作品,不代表本网观点,文章版权属于原始出处单位及原作者所有,本网不承担此稿侵权责任。
3、欢迎各类型媒体积极与本站联络,互相签订转载协议。
4、如著作人对本网刊载内容、版权有异议,请于知道该作品发表之日起30日内联系本网,否则视为自动放弃相关权利。
5、联系我们:;投稿邮箱:,欢迎赐稿。

我要回帖

更多关于 小米note顶配拆屏幕 的文章

 

随机推荐