求助,list usercontrol控件件给每一行前添加一个小图标

listcontrol
加上一个图标。
[问题点数:50分,结帖人sadasasdasd]
listcontrol
加上一个图标。
[问题点数:50分,结帖人sadasasdasd]
只显示楼主
取消只显示楼主
相关推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。ListControl控件的使用方法
ListControl控件的使用方法
  列表控件可以看作是功能增强的ListBox,它提供了四种风格,而且可以同时显示一列的多中属性值。MFC中使用CListCtrl类来封装列表控件的各种操作。通过调用 BOOL&Create(&DWORD&dwStyle,&const&RECT&&rect,&CWnd*&pParentWnd,&UINT&nID&);创建一个窗口,dwStyle中可以使用以下一些列表控件的专用风格:& LVS_ICON&,LVS_SMALLICON&,LVS_LIST,&LVS_REPORT&这四种风格决定控件的外观,同时只可以选择其中一种,分别对应:大图标显示,小图标显示,列表显示,详细报表显示& LVS_EDITLABELS&结点的显示字符可以被编辑,对于报表风格来讲可编辑的只为第一列。& LVS_SHOWSELALWAYS&在失去焦点时也显示当前选中的结点& LVS_SINGLESEL&同时只能选中列表中一项& 首先你需要设置列表控件所使用的ImageList,如果你使用大图标显示风格,你就需要以如下形式调用:& CImageList*&SetImageList(&CImageList*&pImageList,&LVSIL_NORMAL);& 如果使用其它三种风格显示而不想显示图标你可以不进行任何设置,否则需要以如下形式调用:& CImageList*&SetImageList(&CImageList*&pImageList,&LVSIL_SMALL);& int&InsertItem(&int&nItem,&LPCTSTR&lpszItem&);&&插入行 nItem:指明插入位置 lpszItem:为显示字符。 除LVS_REPORT风格外其他三种风格都只需要直接调用InsertItem就可以了,但如果使用报表风格就必须先设置列表控件中的列信息。 int&InsertColumn(&int&nCol,&LPCTSTR&lpszColumnHeading,&int&nFormat&,&int&nWidth,&int&nSubItem);&插入列 iCol:为列的位置,从零开始 lpszColumnHeading:为显示的列名 nFormat:为显示对齐方式 nWidth:为显示宽度 nSubItem:为分配给该列的列索引。& & BOOL&SetItemText(&int&nItem,&int&nSubItem,&LPTSTR&lpszText&);设置每列的显示字符 nItem:为行位置 nSubItem:为列位置 lpszText:为显示字符 下面的代码演示了如何设置多列并插入数据:& m_list.SetImageList(&m_listSmall,LVSIL_SMALL);//设置ImageList m_list.InsertColumn(0,\"Col&1\",LVCFMT_LEFT,300,0);//设置列 m_list.InsertColumn(1,\"Col&2\",LVCFMT_LEFT,300,1); m_list.InsertColumn(2,\"Col&3\",LVCFMT_LEFT,300,2); m_list.InsertItem(0,\"Item&1_1\");//插入行 m_list.SetItemText(0,1,\"Item&1_2\");//设置该行的不同列的显示字符 m_list.SetItemText(0,2,\"Item&1_3\") & COLORREF&GetTextColor(&)/BOOL&SetTextColor(&COLORREF&cr&):用于得到/设置显示的字符颜色。& COLORREF&GetTextBkColor(&)/BOOL&SetTextBkColor(&COLORREF&cr&):用于得到/设置显示的背景颜色。& void&SetItemCount(&int&iCount&):用于得到添加进列表中项的数量。& BOOL&DeleteItem(int&nItem):用于删除某一项 [Page]BOOL&DeleteAllItems(&):将删除所有项。& BOOL&SetBkImage(HBITMAP&hbm,&BOOL&fTile&,&int&xOffsetPercent,&int&yOffsetPercent):用于设置背景位图。& CString&GetItemText(&int&nItem,&int&nSubItem&):用于得到某项的显示字符。& & 列表控件的消息映射同样使用ON_NOTIFY宏,形式如同:ON_NOTIFY(&wNotifyCode,&id,&memberFxn&),wNotifyCode为通知代码,id为产生该消息的窗口ID,memberFxn为处理函数,函数的原型如同void&OnXXXList(NMHDR*&pNMHDR,&LRESULT*&pResult),其中pNMHDR为一数据结构,在具体使用时需要转换成其他类型的结构。对于列表控件可能取值和对应的数据结构为:& LVN_BEGINLABELEDIT&在开始某项编辑字符时发送,所用结构: NMLVDISPINFO& LVN_ENDLABELEDIT&在结束某项编辑字符时发送,所用结构: NMLVDISPINFO& LVN_GETDISPINFO&在需要得到某项信息时发送,(如得到某项的显示字符)所用结构:NMLVDISPINFO& 关于ON_NOTIFY有很多内容,将在以后的内容中进行详细讲解。& 关于动态提供结点所显示的字符:首先你在项时需要指明lpszItem参数为: LPSTR_TEXTCALLBACK。在控件显示该结点时会通过发送TVN_GETDISPINFO来取得所需要的字符,在处理该消息时先将参数pNMHDR转换为 LPNMLVDISPINFO,然后填充其中item.pszText。通过item中的iItem,iSubItem可以知道当前显示的为那一项。下面的代码演示了这种方法:& char&szOut[8][3]={\"No.1\",\"No.2\",\"No.3\"}; //添加结点 m_list.InsertItem(LPSTR_TEXTCALLBACK,...) m_list.InsertItem(LPSTR_TEXTCALLBACK,...) //处理消息 void&CParentWnd::OnGetDispInfoList(NMHDR*&pNMHDR,&LRESULT*&pResult) { &LV_DISPINFO*&pLVDI&=&(LV_DISPINFO*)pNMHDR; &pLVDI-&item.pszText=szOut[pTVDI-&item.iItem]; //通过iItem得到需要显示的字符在数组中的位置 &*pResult&=&0; } 关于编辑某项的显示字符:(在报表风格中只对第一列有效)首先需要设置列表控件的LVS_EDITLABELS风格,在开始编辑时该控件将会发送 LVN_BEGINLABELEDIT,你可以通过在处理函数中返回TRUE来取消接下来的编辑,在编辑完成后会发送LVN_ENDLABELEDIT,在处理该消息时需要将参数 pNMHDR转换为LPNMLVDISPINFO,然后通过其中的item.pszText得到编辑后的字符,并重置显示字符。如果编辑在中途中取消该变量为NULL。下面的代码说明如何处理这些消息:&
  //处理消息&LVN_BEGINLABELEDIT void&CParentWnd::OnBeginEditList(NMHDR*&pNMHDR,&LRESULT*&pResult) { &LV_DISPINFO*&pLVDI&=&(LV_DISPINFO*)pNMHDR; &if(pLVDI-&item.iItem==0);//判断是否取消该操作 &&*pResult&=&1; &else &&*pResult&=&0; [Page]} //处理消息&LVN_BEGINLABELEDIT void&CParentWnd::OnBeginEditList(NMHDR*&pNMHDR,&LRESULT*&pResult) { &LV_DISPINFO*&pLVDI&=&(LV_DISPINFO*)pNMHDR; &if(pLVDI-&item.pszText==NULL);//判断是否已经取消取消编辑 &&m_list.SetItemText(pLVDI-&item.iItem,0,pLVDI-&pszText); //重置显示字符 &*pResult&=&0; } 上面讲述的方法所进行的消息映射必须在父窗口中进行(同样WM_NOTIFY的所有消息都需要在父窗口中处理)。& 如何得到当前选中项位置:在列表控件中没有一个类似于ListBox中GetCurSel()的函数,但是可以通过调用GetNextItem(&-1,&LVNI_ALL&|&LVNI_SELECTED);得到选中项位置。& list&control控件中的风格选项: m_list1.SetExtendedStyle(&LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_CHECKBOXES&); LVS_EX_FULLROWSELECT表示可以点中行中的任意一个列选中这一条记录 LVS_EX_GRIDLINES表示列之间有分隔符号 LVS_EX_CHECKBOXES&表示每一行第一列是checkbox LVCOLUMN:listviewcolumn 设置表头 lvColumn.mask&=&LVCF_SUBITEM|LVCF_TEXT|LVCF_WIDTH|LVCF_FMT;&&设置表头风格 lvColumn.fmt&=&LVCFMT_CENTER;&&&设置表头对齐方式 lvColumn.iSubItem&=&i;&&&&&&&&&&&&&&表头列序 lvColumn.pszText&=&HeaderTxt[i];&&&&表头名称 lvColumn.cx&=&90;&&&&&&&&&&&&&&&&&&&表头宽度 m_list.InsertColumn(i,&lvColumn);&&&插入列
&&&主编推荐
H3C认证Java认证Oracle认证
基础英语软考英语项目管理英语职场英语
.NETPowerBuilderWeb开发游戏开发Perl
二级模拟试题一级模拟试题一级考试经验四级考试资料
港口与航道工程建设工程法规及相关知识建设工程经济考试大纲矿业工程市政公用工程通信与广电工程
操作系统汇编语言计算机系统结构人工智能数据库系统微机与接口
软件测试软件外包系统分析与建模敏捷开发
法律法规历年试题软考英语网络管理员系统架构设计师信息系统监理师
高级通信工程师考试大纲设备环境综合能力
路由技术网络存储无线网络网络设备
CPMP考试prince2认证项目范围管理项目配置管理项目管理案例项目经理项目干系人管理
Powerpoint教程WPS教程
电子政务客户关系管理首席信息官办公自动化大数据
职称考试题目
就业指导签约违约职业测评
招生信息考研政治
网络安全安全设置工具使用手机安全
3DMax教程Flash教程CorelDraw教程Director教程
Dreamwaver教程HTML教程网站策划网站运营Frontpage教程
生物识别传感器物联网传输层物联网前沿技术物联网案例分析
互联网电信IT业界IT生活
Java核心技术J2ME教程
Linux系统管理Linux编程Linux安全AIX教程
Windows系统管理Windows教程Windows网络管理Windows故障
组织运营财务资本
视频播放文件压缩杀毒软件输入法微博
数据库开发Sybase数据库Informix数据库
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-如何得到ListControl选中的项 ListControl选中一行
编辑:www.fx114.net
本篇文章主要介绍了"如何得到ListControl选中的项 ListControl选中一行",主要涉及到如何得到ListControl选中的项 ListControl选中一行方面的内容,对于如何得到ListControl选中的项 ListControl选中一行感兴趣的同学可以参考一下。
大家都知道,ListControl只能点击第一列来选中想选中的项,而很多朋友想实现点击直接选择一行的功能,其实很简单,直接把它的ExtentedStyle设置一下就可以了,如下:
m_listcontrol为控件CListCtrl*变量
点击选中一行:m_listcontrol.SetExtendedStyle(m_listcontrol.GetExtendedStyle()|LVS_EX_FULLROWSELECT);
而如何得到具体一项里面的值,又成了很多朋友的问题,其实也很简单,下面是我知道的一种方法:
得到具体的某一项:
//首先得到点击的位置
POSITION pos=m_listcontrol.GetFirstSelectedItemPosition();
if(pos==NULL)
MessageBox(&请至少选择一项&,&娃子理财&,MB_ICONEXCLAMATION);
//得到行号,通过POSITION转化
nId=(int)m_listcontrol.GetNextSelectedItem(pos);
//得到列中的内容(0表示第一列,同理1,2,3...表示第二,三,四...列)
str=m_listcontrol.GetItemText(nId,0);
str=m_listcontrol.GetItemText(nId,1);
本文标题:
本页链接:关于MFC的LIST Control显示图标问题的搜索推荐 -MFC-TryCatch
>> 相关推荐
关于的搜索推荐
使用ListControl显示多个.ico的图标,如何将图标处理为灰色? 首先是取到Icon文件夹下的图标文件,如果不存在,则获取exe文件的图标。 对图标文件处理如下:
CFileFind*fileFind=newCFileFind();
CS SHFILEINFO
m_imageList.Create(GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON),ILC_COLOR24,50,50);
m_List.SetImageList(&m_imageList,LVSIL_NORMAL);
if(lsInfo.xmlNum&0) { inti=0; BOOLres=fileFind-&FindFile("Icon//*.*");
while(i&lsInfo.xmlNum) { str.Format("Icon//%s.*",lsInfo.lsXmlInfo[i].AppName);
res=fileFind-&FindFile(str);
if(!res) { str.Format("%s",lsInfo.lsXmlInfo[i].AppPath); res=fileFind-&FindFile(str); } res=fileFind-&FindNextFile();
SHGetFileInfo(fileFind-&GetFilePath(),0, &sfi,sizeof(sfi),SHGFI_ICON); m_imageList.Add(sfi.hIcon); m_List.InsertItem(i,lsInfo.lsXmlInfo[i].AppName,i); //...
使用List Control显示多个.ico的图标,如何将图标处理为灰色?首先是取到Icon文件夹下的图标文件,如果不存在,则获取exe文件的图标。对图标文件处理如下:CFile...
大家好,请问MFC中list control 小图标风格的使用方法是怎样的?网上的资料都是report风格的。我想使用list control,主要需要两个功能,一是添加图标项目,二是...
大家好,请问MFC中list control 小图标风格的使用方法是怎样的?网上的资料都是report风格的。我想使用list control,主要需要两个功能,一是添加图标项目,二是...
MFC tree control 显示在list control控件里怎么实现
求高手指点
------------
void BlackWhite::BWInsertList(CListCtrl *CLC,int i,CImageList *ImageListBmp){CLC-&DeleteAllItems();vector&BWQuanXian&::switch(i...
我想在列表控件的第二列加入图标,但是图片总是无法显示,求大神指导。BOOL CamEditorDlg::OnInitDialog(){
CDialogEx::OnInitDialog();
m_ImageList.Crea...
为了给自己编写个小程序,刚刚使用MFC编程,出了点小问题。由于公司外网访问受限,搜索问题解决方法不方便,刚刚论坛也搜索了下,没找的相关问题。因此麻烦各...
我想实现的效果是将数据库中的数据查询出显示在list control的效果。使用的是如下的操作,但是在list control中却什么也没有,这是什么原因?m_hListCtrl-&De...
现在我想在list control控件里面实现如下效果(就是将一天的时间从零点开始每隔30秒显示在控件中):时间00:00:0:01:0:02:30......(一直到...
我在做一个进程管理器,我想获取到进程的图标并添加进程list表里面,像xuetr那样的效果.xuetr下载地址:/
------------
用ExtractIcon HI...
while(!CADB.pRst-&adoEOF){index = m_CRLList.GetItemCount();m_CRLList.InsertItem(index, ""); strtmp.Format("%d", index + 1);
在vs2010的MFC程序里面,要怎么用list control控件来显示固定路径下一个文件夹下的第一级子文件夹,比如我在D盘建了一个文件夹A,A里面包含了另外几个子文件夹,...
如上图所示,上图是surfer软件中设置颜色棒的界面。我用MFC也想编一个这个样的界面来设置我的颜色棒,请问该如何办?如果需要自定义函数,求函数代码,本人对lis...
本帖最后由 cn_dizzy 于
12:38:45 编辑
------------
1)看不见图2)先添加表头m_list1.InsertColumn( 0, "指针" );m_list1.InsertColumn( 1, "...
mysql数据库中有三个表:user表有字段:user_num,user_name,user_password,user_online,主键为user_num。friends表有字段:friends_num,friends_name,user_num,...

我要回帖

更多关于 mfc listcontrol控件 的文章

 

随机推荐