ListCtrl控件的风格设置Word文档下载推荐.docx

上传人:b****5 文档编号:17202574 上传时间:2022-11-28 格式:DOCX 页数:21 大小:26.85KB
下载 相关 举报
ListCtrl控件的风格设置Word文档下载推荐.docx_第1页
第1页 / 共21页
ListCtrl控件的风格设置Word文档下载推荐.docx_第2页
第2页 / 共21页
ListCtrl控件的风格设置Word文档下载推荐.docx_第3页
第3页 / 共21页
ListCtrl控件的风格设置Word文档下载推荐.docx_第4页
第4页 / 共21页
ListCtrl控件的风格设置Word文档下载推荐.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

ListCtrl控件的风格设置Word文档下载推荐.docx

《ListCtrl控件的风格设置Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ListCtrl控件的风格设置Word文档下载推荐.docx(21页珍藏版)》请在冰豆网上搜索。

ListCtrl控件的风格设置Word文档下载推荐.docx

dwStyle|=LVS_EX_CHECKBOXES;

//item前生成checkbox控件

m_list.SetExtendedStyle(dwStyle);

//设置扩展风格

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<

m_list.GetItemCount();

i)

{

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

str.Format(_T("

第%d行的checkbox为选中状态"

),i);

AfxMessageBox(str);

}

CStringstrIns;

strIns="

deletefromtmpStatByGround"

;

m_pRs.CreateInstance(__uuidof(Recordset));

m_pRs->

CursorLocation=adUseClient;

Open((LPCTSTR)strIns,vDispatch,adOpenKeyset,

adLockOptimistic,adCmdUnknown);

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

方法一:

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

选中了第%d行"

方法二:

POSITIONpos=m_list.GetFirstSelectedItemPosition();

if(pos==NULL)

TRACE0("

Noitemswereselected!

\n"

);

else

while(pos)

intnItem=m_list.GetNextSelectedItem(pos);

TRACE1("

Item%dwasselected!

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

9.得到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;

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)

//方法一:

/*

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

*/

//方法二:

NM_LISTVIEW*pNMListView=(NM_LISTVIEW*)pNMHDR;

if(pNMListView->

iItem!

pNMListView->

iItem,pNMListView->

iSubItem);

*pResult=0;

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

UINTnFlag;

intnItem=m_list.HitTest(point,&

nFlag);

//判断是否点在checkbox上

if(nFlag==LVHT_ONITEMSTATEICON)

AfxMessageBox("

点在listctrl的checkbox上"

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

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

OnRclickList1(NMHDR*pNMHDR,LRESULT*pResult)

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

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

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

OnItemchangedList1(NMHDR*pNMHDR,LRESULT*pResult)

//TODO:

Addyourcontrolnotificationhandlercodehere

CStringsTemp;

if((pNMListView->

uOldState&

LVIS_FOCUSED)==LVIS_FOCUSED&

&

(pNMListView->

uNewState&

LVIS_FOCUSED)==0)

sTemp.Format("

%dlostedfocus"

pNMListView->

iItem);

elseif((pNMListView->

LVIS_FOCUSED)==0&

LVIS_FOCUSED)==LVIS_FOCUSED)

%dgotfocus"

LVIS_SELECTED)==LVIS_SELECTED&

LVIS_SELECTED)==0)

%dlostedselected"

LVIS_SELECTED)==0&

LVIS_SELECTED)==LVIS_SELECTED)

%dgotselected"

17.listctrl的subitem添加图标

注意:

首先要用InsertItem()插入一行的第一列,然后才能用SetItem设置其他项

m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);

m_userlist.SetItem(..);

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

网上找到的代码,自己试用并改正过,share

步骤1:

设置list的图像列表为系统图像列表

BOOLSetSystemImageList(CListCtrl&

list)

{

HIMAGELISThimlSmall;

HIMAGELISThimlLarge;

SHFILEINFOsfi;

charcSysDir[MAX_PATH];

CStringstrBuf;

memset(cSysDir,0,MAX_PATH);

GetWindowsDirectory(cSysDir,MAX_PATH);

strBuf=cSysDir;

//SHGetFileInfo:

//IfuFlagscontainsSHGFI_SYSICONINDEX,thereturnvalueisahandleto

//animagelistthatcontainsthelargeiconimages.

//IfSHGFI_SMALLICONisincludedwithSHGFI_SYSICONINDEX,thereturnvalue

//isthehandletoanimagelistthatcontainsthesmalliconimages.

//

himlSmall=(HIMAGELIST)SHGetFileInfo((LPCSTR)cSysDir,

0,

&

sfi,

sizeof(SHFILEINFO),

SHGFI_SYSICONINDEX|SHGFI_SMALLICON);

himlLarge=(HIMAGELIST)SHGetFileInfo((LPCSTR)cSysDir,

sfi,

SHGFI_SYSICONINDEX|SHGFI_LARGEICON);

if(himlSmall&

himlLarge)

:

SendMessage(list.m_hWnd,LVM_SETIMAGELIST,

(WPARAM)LVSIL_SMALL,(LPARAM)himlSmall);

(WPARAM)LVSIL_NORMAL,(LPARAM)himlLarge);

returnTRUE;

}

步骤2:

给列表添加指定的文件,同时获得该文件的的图标索引,给list添加图标

intGetIconIndex(LPCTSTRlpszPath,BOOLbIsDir,BOOLbSelected);

//向前声明

voidAddFiles(CListCtrl&

list,LPCTSTRlpszFileName,BOOLbAddToDocument)

{

intnIcon=GetIconIndex(lpszFileName,FALSE,TRUE);

CStringstrSize;

CFileFindfilefind;

//getfilesize

if(filefind.FindFile(lpszFileName))

filefind.FindNextFile();

strSize.Format("

%d"

filefind.GetLength());

strSize="

0"

//splitpathandfilename

CStringstrFileName=lpszFileName;

CStringstrPath;

intnPos=strFileName.ReverseFind('

\\'

if(nPos!

strPath=strFileName.Left(nPos);

strFileName=strFileName.Mid(nPos1);

//inserttolist

intnItem=list.GetItemCount();

//list.InsertItem(nItem,strFileName,nIcon);

//list.SetItemText(nItem,1,strSize);

//此处可以根据实际需要修改代码

19.listctrl内容进行大数据量更新时,避免闪烁

m_list.SetRedraw(FALSE);

//更新内容

m_list.SetRedraw(TRUE);

m_list.Invalidate();

m_list.UpdateWindow();

20.清除ListCtrl以重新初始化:

//删除所有行

m_ctrllist.DeleteAllItems();

//删除所有列

intiColCount=m_ctrllist.GetHeaderCtrl()->

GetItemCount();

//方法1

//原理:

删除第一列后,其他列向前移动

while(m_ctrllist.DeleteColumn(0));

//方法2

for(inti=0;

i<

iColCount;

m_ctrllist.DeleteColumn(0);

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

当前位置:首页 > 工作范文 > 演讲主持

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

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