MFCCListCtrl类归类大全.docx

上传人:b****7 文档编号:10765997 上传时间:2023-02-22 格式:DOCX 页数:22 大小:25.49KB
下载 相关 举报
MFCCListCtrl类归类大全.docx_第1页
第1页 / 共22页
MFCCListCtrl类归类大全.docx_第2页
第2页 / 共22页
MFCCListCtrl类归类大全.docx_第3页
第3页 / 共22页
MFCCListCtrl类归类大全.docx_第4页
第4页 / 共22页
MFCCListCtrl类归类大全.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

MFCCListCtrl类归类大全.docx

《MFCCListCtrl类归类大全.docx》由会员分享,可在线阅读,更多相关《MFCCListCtrl类归类大全.docx(22页珍藏版)》请在冰豆网上搜索。

MFCCListCtrl类归类大全.docx

MFCCListCtrl类归类大全

MFC:

CListCtrl类

SDK:

以“ListView_”开头的一些宏。

如ListView_InsertColumn

--------------------------------------------------------------------------------

1.CListCtrl风格

     LVS_ICON:

为每个item显示大图标

     LVS_SMALLICON:

为每个item显示小图标

     LVS_LIST:

显示一列带有小图标的item

     LVS_REPORT:

显示item详细资料

     直观的理解:

windows资源管理器,“查看”标签下的“大图标,小图标,列表,详细资料”

--------------------------------------------------------------------------------

2.设置listctrl风格及扩展风格

     LONGlStyle;

     lStyle=GetWindowLong(m_list.m_hWnd,GWL_STYLE);//获取当前窗口style

     lStyle&=~LVS_TYPEMASK;//清除显示方式位

     lStyle|=LVS_REPORT;//设置style

     SetWindowLong(m_list.m_hWnd,GWL_STYLE,lStyle);//设置style

 

     DWORDdwStyle=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);//设置扩展风格

 

     注:

listview的style请查阅msdn

      

--------------------------------------------------------------------------------

3.插入数据

     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”);//设置数据

--------------------------------------------------------------------------------

4.一直选中item

   选中style中的Showselectionalways,或者在上面第2点中设置LVS_SHOWSELALWAYS

--------------------------------------------------------------------------------

5.选中和取消选中一行

   intnIndex=0;

   //选中

   m_list.SetItemState(nIndex,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);

   //取消选中

   m_list.SetItemState(nIndex,0,LVIS_SELECTED|LVIS_FOCUSED);

 

--------------------------------------------------------------------------------

6.得到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为选中状态"),i);

               AfxMessageBox(str);

          }

     }

--------------------------------------------------------------------------------

7.得到listctrl中所有选中行的序号

     方法一:

     CStringstr;

     for(inti=0;i

     {

          if(m_list.GetItemState(i,LVIS_SELECTED)==LVIS_SELECTED)

          {

               str.Format(_T("选中了第%d行"),i);

               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

          }

     }

--------------------------------------------------------------------------------

8.得到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

      

--------------------------------------------------------------------------------

9.得到listctrl的所有列的header字符串内容

     LVCOLUMNlvcol;

     char str[256];

     int  nColNum;

     CString strColumnName[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++;

     }

--------------------------------------------------------------------------------

10.使listctrl中一项可见,即滚动滚动条

   m_list.EnsureVisible(i,FALSE);

--------------------------------------------------------------------------------

11.得到listctrl列数

   intnHeadNum=m_list.GetHeaderCtrl()->GetItemCount();

--------------------------------------------------------------------------------

12.删除所有列

     方法一:

        while(m_list.DeleteColumn(0))

      因为你删除了第一列后,后面的列会依次向上移动。

     方法二:

     intnColumns=4;

     for(inti=nColumns-1;i>=0;i--)

         m_list.DeleteColumn(i);

--------------------------------------------------------------------------------

13.得到单击的listctrl的行列号

     添加listctrl控件的NM_CLICK消息相应函数

     voidCTest6Dlg:

:

OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)

     {

          //方法一:

          

  

         //方法二:

         

          *pResult=0;

     }

--------------------------------------------------------------------------------

14.判断是否点击在listctrl的checkbox上

     添加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;

    

          UINTnFlag;

          intnItem=m_list.HitTest(point,&nFlag);

          //判断是否点在checkbox上

          if(nFlag==LVHT_ONITEMSTATEICON)

          {

               AfxMessageBox("点在listctrl的checkbox上");

          }

          *pResult=0;

     }

--------------------------------------------------------------------------------

15.右键点击listctrl的item弹出菜单

     添加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;

 }

--------------------------------------------------------------------------------

16.item切换焦点时(包括用键盘和鼠标切换item时),状态的一些变化顺序

     添加listctrl控件的LVN_ITEMCHANGED消息相应函数

     voidCTest6Dlg:

:

OnItemchangedList1(NMHDR*pNMHDR,LRESULT*pResult)

     {

          NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;

          //TODO:

Addyourcontrolnotificationhandlercodehere

   

          CStringsTemp;

 

          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)

          {

               sTemp.Format("%dgotselected",pNMListView->iItem);

          }

   

          *pResult=0;

     }

--------------------------------------------------------------------------------

17.得到另一个进程里的listctrl控件的item内容

--------------------------------------------------------------------------------

18.选中listview中的item

Q131284:

HowToSelectaListviewItemProgrammatically

--------------------------------------------------------------------------------

19.如何在CListView中使用CListCtrl的派生类

--------------------------------------------------------------------------------

20.listctrl的subitem添加图标

     m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);

     m_list.SetItem(..);//具体参数请参考msdn

--------------------------------------------------------------------------------

21.在CListCtrl显示文件,并根据文件类型来显示图标

     网上找到的代码,share

     BOOLCTest6Dlg:

:

OnInitDialog()

     {

          CDialog:

:

OnInitDialog();

  

          HIMAGELISThimlSmall;

          HIMAGELISThimlLarge;

          SHFILEINFOsfi;

          char cSysDir[MAX_PATH];

          CString strBuf;

 

          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)h

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1