




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC6・0SDKListcontrol控件数据编辑2011-11-1318:58:06|分类:默认分类|标签:|字号大中小订阅实现步骤:1.VC6.0新建Win32Application工程文件ListtrlEdit,选择"HelloWorld!"。在About对话框中添加Listcontrol控件ID为:IDC_LIST1,属性修改如下:添加“确认”按钮ID为:IDB_BTOK,勾选Defaultbutton属性
“取消”按钮ID为:IDB_CANCEL“Edit”编辑框,ID为“IDC_EDIT1”,去掉Visible、Border属性对号
将原“OK”按钮改名为“退出”并去掉Defaultbutton属性对号
凶凶}}}}RECTrect,rt;staticRECTltrt={50,65,500,310};switch(message){caseWM_NOTIFY:{pNMHDR=(NMHDR*)lParam;if(pNMHDR->code==NM_CLICK){::SetWindowText(hedit,"");
ShowWindow(hedit,SW_HIDE);}
if(pNMHDR->code==NM_DBLCLK){dblclkcell=true;
LPNMITEMACTIVATEtemp=(LPNMITEMACTIVATE)lParam;
iltem=temp->iltem;iSubItem=temp->iSubItem;intrownum=ListView_GetItemCount(hWndlist);〃返回行数intcolnum=Header_GetItemCount(ListView_GetHeader(hWndlist));〃返回列数
if(iSubItem==-1||iItem==-1)return0;ListView_GetItemText(hWndlist,iItem,iSubItem,szText,16);
ListView_GetSubItemRect(hWndlist,iItem,iSubItem,LVIR_LABEL,&rect);
if(iItem!=-1){rt.left=rect.left+ltrt.left+2;rt.top=rect.top+ltrt.top+1;rt.right=rect.right-rect.left-3;
rt.bottom=rect.bottom-rect.top;::SetWindowPos(hedit,HWND_TOP,〃改变窗口尺寸rt.left,rt.top,rt.right,rt.bottom,NULL);::ShowWindow(hedit,SW_SHOW);::SetFocus(hedit);::SetWindowText(hedit,szText);::SendMessage(hedit,EM_SETSEL,0,-1L);〃全选文本框文本return0;}caseWM_INITDIALOG:hWndlist=GetDlgItem(hDlg,IDC_LIST1);hedit=GetDlgItem(hDlg,IDC_EDIT1);::MoveWindow(hWndlist,ltrt.left,ltrt.top,ltrt.right,ltrt.bottom,NULL);SendMessage(hWndlist,LVM_SETEXTENDEDLISTVIEWSTYLE,0,LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);Collnfo1.mask=LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;ColInfo1.iSubItem=0;Collnfo1.fmt=LVCFMT_CENTER;Collnfo1.cx=100;ColInfo1.pszText="商品名称";ColInfo1.cchTextMax=50;Collnfo2.mask=LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;ColInfo2.iSubItem=0;Collnfo2.fmt=LVCFMT_CENTER;Collnfo2.cx=100;ColInfo2.pszText="编号";ColInfo2.cchTextMax=50;::SendMessage(hWndlist,LVM_INSERTCOLUMN,WPARAM(0),LPARAM(&ColInfo1));::SendMessage(hWndlist,LVM_INSERTCOLUMN,WPARAM(1),LPARAM(&ColInfo2));item.mask=LVIF_TEXT;item.pszText="电冰箱";item.iltem=0;item.iSubItem=0;::SendMessage(hWndlist,LVM_INSERTITEM,0,LPARAM(&item));item.mask=LVIF_TEXT;item.pszText="1234";item.iltem=0;item.iSubItem=1;::SendMessage(hWndlist,LVM_SETITEM,0,LPARAM(&item));item.mask=LVIF_TEXT;item.pszText="电视机";item.iltem=1;item.iSubItem=0;::SendMessage(hWndlist,LVM_INSERTITEM,0,LPARAM(&item));item.mask=LVIF_TEXT;item.pszText="2345";item.iltem=l;
item.iSubItem=l;::SendMessage(hWndlist,LVM_SETITEM,0,LPARAM(&item));
returnTRUE;caseWM_COMMAND:wmld=LOWORD(wParam);wmEvent=HIWORD(wParam);switch(wmld){caseIDOK:::SetWindowText(hedit,"");EndDialog(hDlg,LOWORD(wParam));returnTRUE;caseIDB_BTOK:if(iItem!=-1&&iSubItem!=-1){if(dblclkcell){::GetWindowText(hedit,szText,GetWindowTextLength(hedit)+1);LVITEMlvItem={0};lvItem.mask=LVIF_TEXT|LVCFMT_LEFT|LVCF_FMT;lvItem.iItem=iItem;lvItem.iSubItem=iSubItem;
lvItem.pszText=szText;::SendMessage(hWndlist,LVM_SETITEM,(WPARAM)0,(WPARAM)&lvItem);
::SetWindowText(hedit,"");ShowWindow(hedit,SW_HIDE);dblclkcell=false;}::SetFocus(hWndlist);}break;caseIDB_CANCEL:::SetWindowText(hedit,"");ShowWindow(hedit,SW_HIDE);::SetFocus(hWndlist);
returnTRUE;}6.运行,点击“Help”->“About”,双击一个单元格效果如下;1.CListCtrl1.CListCtrl风格LVS_ICON:为每个item显示大图标1.CListCtrl1.CListCtrl风格LVS_ICON:为每个item显示大图标MFC如何使用ListControl以下未经说明,listetri默认view风格为report相关类及处理函数MFC:CListCtrl类SDK:以“ListView_”开头的一些宏。如ListView_lnsertColumn"),i);"),i);}LVS_SMALLICON:为每个item显示小图标LVS_LIST:显示一列带有小图标的itemLVS_REPORT:显示item详细资料直观的理解:windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”设置listctrl风格及扩展风格LONGlStyle;lStyle=GetWindowLong(m_list.m_hWnd,GWL_STYLE);//获取当前窗口stylelStyle&=~LVS_TYPEMASK;//清除显示方式位lStyle|=LVS_REPORT;//设置styleSetWindowLong(m_list.m_hWnd,GWL_STYLE,IStyle);//设置styleDWORDdwStyle=m_list.GetExtendedStyle();dwStyle|=LVS_EX_FULLROWSELECT;〃选中某行使整行高亮(只适用与report风格的listctrl)dwStyle|=LVS_EX_GRIDLINES;〃网格线(只适用与report风格的listctrl)dwStyle|=LVS_EX_CHECKBOXES;//item前生成checkbox控件m_list.SetExtendedStyle(dwStyle);//设置扩展风格插入数据m_list.InsertColumn(0,"ID",LVCFMT_LEFT,40);//插入列m_list.InsertColumn(1,"NAME",LVCFMT_LEFT,50);intnRow=m_list.InsertItem(0,“11”);//插入行m_list.SetItemText(nRow,1,“jacky”);//设置数据—直选中item选中style中的Showselectionalways,或者在上面第2点中设置LVS_SHOWSELALWAYS选中和取消选中—行intnIndex=0;//选中m_list.SetItemState(nIndex,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);0,//取消选中0,m_list.SetItemState(nIndex,LVIS_SELECTED|LVIS_FOCUSED);得到listctrl中所有行的checkbox的状态m_list.SetExtendedStyle(LVS_EX_CHECKBOXES);CStringstr;for(inti=0;i{if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED||m_list.GetCheck(i)){str.Format(_T("第%d行的checkbox为选中状态AfxMessageBox(str);得到listctrl中所有选中行的序号—^―、亠方法一:CStringstr;for(inti=0;i{if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED){str.Format(_T("选中了第%d行"),i);nbsp;AfxMessageBox(str);}}方法二:POSITIONpos=m_list.GetFirstSelectedItemPosition();if(pos==NULL)TRACE0("Noitemswereselected!\n");else{while(pos){intnItem=m_list.GetNextSelectedItem(pos);TRACE1("Item%dwasselected!\n",nItem);//youcoulddoyourownprocessingonnItemhere}}}得到item的信息TCHARszBuf[1024];LVITEMlvi;lvi.iItem=nItemIndex;lvi.iSubItem=0;lvi.mask=LVIF_TEXT;lvi.pszText=szBuf;lvi.cchTextMax=1024;m_list.GetItem(&lvi);关于得到设置item的状态,还可以参考msdn文章Q173242:UseMaskstoSet/GetItemStatesinCListCtrl/kb/173242/en-us得到listctrl的所有列的header字符串内容LVCOLUMNlvcol;charstr[256];intnColNum;CStringstrColumnName[4];〃假如有4列nColNum=0;lvcol.mask=LVCF_TEXT;lvcol.pszText=str;lvcol.cchTextMax=256;while(m_list.GetColumn(nColNum,&lvcol)){strColumnName[nColNum]=lvcol.pszText;nColNum++;使listctrl中一项可见,即滚动滚动条m_list.EnsureVisible(i,FALSE);得到listctrl列数intnHeadNum=m_list.GetHeaderCtrl()->GetItemCount();删除所有列方法一:while(m_list.DeleteColumn(0))因为你删除了第一列后,后面的列会依次向上移动方法二:intnColumns=4;for(inti=nColumns-1;i>=0;i--)m_list.DeleteColumn(i);得到单击的listctrl的行列号添加listctrl控件的NM_CLICK消息相应函数voidCTest6Dlg::OnClickList1(NMHDR*pNMHDR,LRESULT*pResult){//方法一:/*DWORDdwPos=GetMessagePos();CPointpoint(LOWORD(dwPos),HIWORD(dwPos));m_list.ScreenToClient(&point);LVHITTESTINFOlvinfo;lvinfo.pt=point;lvinfo.flags=LVHT_ABOVE;intnItem=m_list.SubItemHitTest(&lvinfo);if(nItem!=-1){CStringstrtemp;strtemp.Format("单击的是第%d行第%d列",lvinfo.iItem,lvinfo.iSubItem);AfxMessageBox(strtemp);}//方法二:pNMListView/*NM_LISTVIEW*(NM_LISTVIEW*)pNMHDR;pNMListViewif(pNMListView->iItem!=-1){CStringstrtemp;strtemp.Format(单击的是第%d行第%d列",pNMListView->iItem,pNMListView->iSubItem);AfxMessageBox(strtemp);}*/*pResult=0;判断是否点击在listctrl的checkbox上添加listctrl控件的NM_CLICK消息相应函数voidCTest6Dlg::OnClickList1(NMHDR*pNMHDR,LRESULT*pResult){DWORDdwPos=GetMessagePos();CPointpoint(LOWORD(dwPos),HIWORD(dwPos));m_list.ScreenToClient(&point);LVHITTESTINFOlvinfo;nbsp;lvinfo.pt=point;lvinfo.flags=LVHT_ABOVE;UINTnFlag;intnItem=m_list.HitTest(point,&nFlag);//判断是否点在checkbox上if(nFlag==LVHT_ONITEMSTATEICON){AfxMessageBox("点在listetri的checkbox上");}*pResult=0;}添加listctrl控件的右键点击listctrl的添加listctrl控件的NM_RCLICK消息相应函数voidCTest6Dlg::OnRclickList1(NMHDR*pNMHDR,LRESULT*pResult){NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;if(pNMListView->iItem!=-1){DWORDdwPos=GetMessagePos();CPointpoint(LOWORD(dwPos),HIWORD(dwPos));CMenumenu;VERIFY(menu.LoadMenu(IDR_MENU1));CMenu*popup=menu.GetSubMenu(0);ASSERT(popup!=NULL);popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,point.x,point.y,this);}*pResult=0;}item切换焦点时(包括用键盘和鼠标切换item时),状态的一些变化顺序添加listctrl控件的LVN_ITEMCHANGED消息相应函数voidCTest6Dlg::OnItemchangedList1(NMHDR*pNMHDR,LRESULT*pResult){NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;//TODO:AddyourcontrolnotificationhandlersTemp.Format("%dsTemp.Format("%dgotsTemp.Format("%dsTemp.Format("%dgotcodehereCStringsTemp;if((pNMListView->uOldState&LVIS_FOCUSED)==LVIS_FOCUSED&&(pNMListView->uNewState&LVIS_FOCUSED)==0){sTemp.Format("%dlostedfocus",pNMListView->iItem);}elseif((pNMListView->uOldState&LVIS_FOCUSED)==0&&(pNMListView->uNewState&LVIS_FOCUSED)==LVIS_FOCUSED){sTemp.Format("%dgotfocus",pNMListView->iItem);}if((pNMListView->uOldState&LVIS_SELECTED)==LVIS_SELECTED&&(pNMListView->uNewState&LVIS_SELECTED)==0){sTemp.Format("%dlostedselected",pNMListView->iItem);}elseif((pNMListView->uOldState&LVIS_SELECTED)==0&&(pNMListView->uNewState&LVIS_SELECTED)==LVIS_SELECTED){selected",pNMListView->iItem);}*pResult=0;}得到另一个进程里的listctrl控件的item内容/threads/int64_memsteal.asp选中listview中的itemQ131284:HowToSelectaListviewItemProgrammatically/kb/131284/en-us如何在CListView中使用CListCtrl的派生类/cpp/controls/listview/introduction/article.php/c919/listctrl的subitem添加图标m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);m_list.SetItem(..);//具体参数请参考msdn在CListCtrl显示文件,并根据文件类型来显示图标网上找到的代码,shareBOOLCTest6Dlg::OnInitDialog(){CDialog::OnInitDialog();HIMAGELISThimlSmall;HIMAGELISThimlLarge;SHFILEINFOsfi;charcSysDir[MAX_PATH];StringstrBuf;memset(cSysDir,0,MAX_PATH);GetWindowsDirectory(cSysDir,MAX_PATH);strBuf=cSysDir;sprintf(cSysDir,"%s",strBuf.Left(strBuf.Find("\\")+1));himlSmall=(HIMAGELIST)SHGetFileInfo((LPCSTR)cSysDir,0,&sfi,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX|SHGFI_SMALLICON);himlLarge=(HIMAGELIST)SHGetFileInfo((LPCSTR)cSysDir,0,&sfi,sizeof(SHFILEINFO),SHGFI_SYSICONINDEX|SHGFI_LARGEICON);if(himlSmall&&himlLarge){::SendMessage(m_list.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSIL_SMALL,(LPARAM)himlSmall);::SendMessage(m_list.m_hWnd,LVM_SETIMAGELIST,(WPARAM)LVSIL_NORMAL,(LPARAM)himlLarge);}returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCTest6Dlg::AddFiles(LPCTSTRlpszFileName,BOOLbAddToDocument){intnIcon=GetIconIndex(lpszFileName,FALSE,FALSE);CStringstrSize;CFileFindfilefind;//getfilesizeif(filefind.FindFile(lpszFileName)){filefind.FindNextFile();strSize.Format("%d",filefind.GetLength());}elsestrSize="0";//splitpathandfilenameCStringstrFileName=lpszFileName;CStringstrPath;intnPos=strFileName.ReverseFind('\\');if(nPos!=-1){strPath=strFileName.Left(nPos);strFileName=strFileName.Mid(nPos+1);}//inserttolistintnItem=m_list.GetItemCount();m_list.InsertItem(nItem,strFileName,nIcon);m_list.SetItemText(nItem,1,strSize);m_list.SetItemText(nItem,2,strFileName.Right(3));m_list.SetItemText(nItem,3,strPath);}intCTest6Dlg::GetIconIndex(LPCTSTRlpszPath,BOOLbIsDir,BOOLbSelected){SHFILEINFOsfi;memset(&sfi,0,sizeof(sfi));if(bIsDir){SHGetFileInfo(lpszPath,FILE_ATTRIBUTE_DIRECTORY,&sfi,sizeof(sfi),SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES|(bSelected?SHGFI_OPENICON:0));returnsfi.iIcon;}else{SHGetFileInfo(lpszPath,FILE_ATTRIBUTE_NORMAL,&sfi,sizeof(sfi),SHGFI_SMALLICON|SHGFI_SYSICONINDEX|SHGFI_USEFILEATTRIBUTES|(bSelected?SHGFI_OPENICON:0));returnsfi.iIcon;}return-1;}listctrl内容进行大数据量更新时,避免闪烁m_list.SetRedraw(FALSE);//更新内容m_list.SetRedraw(TRUE);m_list.Invalidate();m_list.Updat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 办公门安装合同范例
- 二建水利合同范本
- 2025年临沧货运从业资格证模拟考试题库
- 互惠合同范本
- 农药仓储配送合同范本
- 兼职中介合同范本
- 传媒公司投资合同范本
- 劳动合同范本 襄阳
- saas服务合同范本
- 加工维修承揽合同范本
- 2024年高考时事政治考试题库(134题)
- 有关煤矿生产新技术、新工艺、新设备和新材料及其安全技术要求课件
- DZ∕T 0201-2020 矿产地质勘查规范 钨、锡、汞、锑(正式版)
- 安全生产责任制考试试卷及答案
- 产科临床诊疗指南
- 挤压模具抛光培训课件
- 教育学原理-第八章-教学-适用于项贤明主编《教育学原理》(马工程)
- 学校安全教育教师培训
- 大学生寒假回访母校社会实践报告
- 配件供应技术服务和质保期服务计划方案
- 电机制造中的质量体系标准化建设
评论
0/150
提交评论