版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中铁工程设计咨询集团有限公司高校毕业生招聘考试参考试题(浓缩500题)附答案详解ab卷
- 2026秋季国家管网集团西南管道公司高校毕业生招聘考试备考试题(浓缩500题)带答案详解(完整版)
- 2026中铁工程设计咨询集团有限公司高校毕业生招聘考试参考试题(浓缩500题)及答案详解【典优】
- 2026届国家管网集团高校毕业生招聘笔试模拟试题(浓缩500题)及答案详解(全优)
- 2026国网海南省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题含答案详解(考试直接用)
- 2026秋季国家管网集团浙江省天然气管网有限公司高校毕业生招聘笔试参考题库(浓缩500题)含答案详解(典型题)
- 2026秋季国家管网集团浙江省天然气管网有限公司高校毕业生招聘考试备考题库(浓缩500题)附参考答案详解(研优卷)
- 2026国网天津市电力公司高校毕业生提前批招聘笔试参考题库浓缩500题及参考答案详解
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试参考题库(浓缩500题)带答案详解(黄金题型)
- 2026国网云南省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题及一套答案详解
- 外科护理学考试题(附参考答案)
- 坡面水文-生态耦合过程-洞察阐释
- CPA经济法-第6章课件
- 银企合作协议书
- 2024-2025学年广东省广州市越秀区第十三中学八年级上学期期中测试数学试卷
- 小米集团2024年环境、社会及管治报告(ESG)
- 手机媒体概论(自考14237)复习题库(含真题、典型题)
- Unit 1 You and Me Section A How Do We Get to Know Each Other教学设计 -2024-2025学年人教版(2024)七年级英语上册
- 储能产业链梳理分析
- 公司收购居间合同范本
- 消毒灭菌基本知识
评论
0/150
提交评论