- 浏览: 73521 次
- 性别:
- 来自: 上海
文章分类
最新评论
20. listctrl的subitem添加图标
m_list.SetExtendedStyle(LVS_EX_SUBITEMIMAGES);
m_list.SetItem(..); //具体参数请参考msdn
21. 在CListCtrl显示文件,并根据文件类型来显示图标
网上找到的代码,share
BOOL CTest6Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
HIMAGELIST himlSmall;
HIMAGELIST himlLarge;
SHFILEINFO sfi;
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)himlSmall);
::SendMessage(m_list.m_hWnd, LVM_SETIMAGELIST,
(WPARAM)LVSIL_NORMAL, (LPARAM)himlLarge);
}
return TRUE; // return TRUE unless you set the focus to a control
}
void CTest6Dlg::AddFiles(LPCTSTR lpszFileName, BOOL bAddToDocument)
{
int nIcon = GetIconIndex(lpszFileName, FALSE, FALSE);
CString strSize;
CFileFind filefind;
// get file size
if (filefind.FindFile(lpszFileName))
{
filefind.FindNextFile();
strSize.Format("%d", filefind.GetLength());
}
else
strSize = "0";
// split path and filename
CString strFileName = lpszFileName;
CString strPath;
int nPos = strFileName.ReverseFind('\\');
if (nPos != -1)
{
strPath = strFileName.Left(nPos);
strFileName = strFileName.Mid(nPos 1);
}
// insert to list
int nItem = 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);
}
int CTest6Dlg::GetIconIndex(LPCTSTR lpszPath, BOOL bIsDir, BOOL bSelected)
{
SHFILEINFO sfi;
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));
return sfi.iIcon;
}
else
{
SHGetFileInfo (lpszPath,
FILE_ATTRIBUTE_NORMAL,
&sfi,
sizeof(sfi),
SHGFI_SMALLICON | SHGFI_SYSICONINDEX |
SHGFI_USEFILEATTRIBUTES | (bSelected ? SHGFI_OPENICON : 0));
return sfi.iIcon;
}
return -1;
}
22. listctrl内容进行大数据量更新时,避免闪烁
m_list.SetRedraw(FALSE);
//更新内容
m_list.SetRedraw(TRUE);
m_list.Invalidate();
m_list.UpdateWindow();
或者参考
23. listctrl排序
Q250614:How To Sort Items in a CListCtrl in Report View
http://support.microsoft.com/kb/250614/en-us
24. 在listctrl中选中某个item时动态改变其icon或bitmap
Q141834: How to change the icon or the bitmap of a CListCtrl item in Visual C
http://support.microsoft.com/kb/141834/en-us
25. 在添加item后,再InsertColumn()后导致整列数据移动的问题
Q151897: CListCtrl::InsertColumn() Causes Column Data to Shift
http://support.microsoft.com/kb/151897/en-us
26. 关于listctrl第一列始终居左的问题
解决办法:把第一列当一个虚列,从第二列开始插入列及数据,最后删除第一列。
具体解释参阅 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/listview/structures/lvcolumn.asp
27. 锁定column header的拖动
http://msdn.microsoft.com/msdnmag/issues/03/06/CQA/
28. 如何隐藏clistctrl的列
把需隐藏的列的宽度设为0,然后检测当该列为隐藏列时,用上面第27点的锁定column 的拖动来实现
29. listctrl进行大数据量操作时,使用virtual list
http://www.microsoft.com/msj/archive/S2061.aspx
http://www.codeguru.com/cpp/controls/listview/advanced/article.php/c4151/
http://www.codeproject.com/listctrl/virtuallist.asp
30. 关于item只能显示259个字符的问题
解决办法:需要在item上放一个edit。
31. 响应在listctrl的column header上的鼠标右键单击
Q125694: How To Find Out Which Listview Column Was Right-Clicked
http://support.microsoft.com/kb/125694/en-us
32. 类似于windows资源管理器的listview
Q234310: How to implement a ListView control that is similar to Windows Explorer by using DirLV.exe
http://support.microsoft.com/kb/234310/en-us
33. 在ListCtrl中OnTimer只响应两次的问题
Q200054:
PRB: OnTimer() Is Not Called Repeatedly for a List Control
http://support.microsoft.com/kb/200054/en-us
34. 以下为一些为实现各种自定义功能的listctrl派生类
(1) 拖放
http://www.codeproject.com/listctrl/dragtest.asp
在CListCtrl和CTreeCtrl间拖放
http://support.microsoft.com/kb/148738/en-us
(2) 多功能listctrl
支持subitem可编辑,图标,radiobutton,checkbox,字符串改变颜色的类
http://www.codeproject.com/listctrl/quicklist.asp
支持排序,subitem可编辑,subitem图标,subitem改变颜色的类
http://www.codeproject.com/listctrl/ReportControl.asp
(3) subitem中显示超链接
http://www.codeproject.com/listctrl/CListCtrlLink.asp
(4) subitem的tooltip提示
http://www.codeproject.com/listctrl/ctooltiplistctrl.asp
(5) subitem中显示进度条
http://www.codeproject.com/listctrl/ProgressListControl.asp
http://www.codeproject.com/listctrl/napster.asp
http://www.codeguru.com/Cpp/controls/listview/article.php/c4187/
(6) 动态改变subitem的颜色和背景色
http://www.codeproject.com/listctrl/highlightlistctrl.asp
http://www.codeguru.com/Cpp/controls/listbox/colorlistboxes/article.php/c4757/
(7) 类vb属性对话框
http://www.codeproject.com/listctrl/propertylistctrl.asp
http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c995/
http://www.codeguru.com/Cpp/controls/listview/propertylists/article.php/c1041/
(8) 选中subitem(只高亮选中的item)
http://www.codeproject.com/listctrl/SubItemSel.asp
http://www.codeproject.com/listctrl/ListSubItSel.asp
(9) 改变行高
http://www.codeproject.com/listctrl/changerowheight.asp
(10) 改变行颜色
http://www.codeproject.com/listctrl/coloredlistctrl.asp
(11) 可编辑subitem的listctrl
http://www.codeproject.com/listctrl/nirs2000.asp
http://www.codeproject.com/listctrl/editing_subitems_in_listcontrol.asp
(12) subitem可编辑,插入combobox,改变行颜色,subitem的tooltip提示
http://www.codeproject.com/listctrl/reusablelistcontrol.asp
(13) header 中允许多行字符串
http://www.codeproject.com/listctrl/headerctrlex.asp
(14) 插入combobox
http://www.codeguru.com/Cpp/controls/listview/editingitemsandsubitem/article.php/c979/
(15) 添加背景图片
http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c4173/
http://www.codeguru.com/Cpp/controls/listview/backgroundcolorandimage/article.php/c983/
http://www.vchelp.net/vchelp/archive.asp?type_id=9&class_id=1&cata_id=1&article_id=1088&search_term=
(16) 自适应宽度的listctrl
http://www.codeproject.com/useritems/AutosizeListCtrl.asp
(17) 改变ListCtrl高亮时的颜色(默认为蓝色)
处理 NM_CUSTOMDRAW
http://www.codeproject.com/listctrl/lvcustomdraw.asp
(18) 改变header颜色
http://www.pocketpcdn.com/articles/hdr_color.html
发表评论
-
自己写的一段customerDraw
2010-08-24 16:20 1894void CNewReportPage::OnNMCustom ... -
帖BitMap
2010-08-24 09:42 791void CEx_14View::O ... -
clistctrl +号按钮绘制
2010-08-11 17:18 1584网上有关clistctrl举不胜举,包括按钮控件的绘 ... -
VC中使用ListCtrl经验总结(1)
2010-08-11 17:07 1329ListCtrl在工作中,常常用到,也常常看到大家发帖问怎么用 ... -
LV_COLUMN结构体
2010-08-10 14:44 2710typedef struct _LV_COLUMN {UINT ... -
加载位图BITMAP
2010-08-10 14:27 1457m_Bitmap.LoadBitmap(IDB_BITMAP1 ... -
关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
2010-08-10 13:15 6454而OnPaint()是CWnd的类成员,同时负责响应WM_ ... -
listctrl 重绘
2010-08-10 10:15 1055common control 4.7版本介绍 ... -
OnCreate PreCreateWindow PreSubclassWindow
2010-08-09 17:47 1778OnCreate PreCreateWindow PreSub ... -
扩展CListCtrl实现颜色长度改变
2010-08-09 17:34 3223用CListCtrl来显示数据比较方便,有时候我们需要标注某一 ... -
创建CListCtrl中的排序小图标
2010-08-09 17:11 2319创建CListCtrl中的排序小图标 for(int i = ... -
CListCtrl控件的使用
2010-08-09 17:02 1204初始化: DWORD dwStyle; dwStyle = m ... -
改变 CListCtrl、CHeaderCtrl 高度、字体、颜色和背景
2010-08-09 16:49 2684改变 CListCtrl、CHeaderCtrl 高度、字体、 ... -
CHeaderCtrl用法
2010-08-09 15:47 4258CListCtrl的表头可以单独 ... -
CListCtrl::SortItems的用法:
2010-08-09 12:37 2009CListCtrl::SortItems的用法: (一)So ... -
树型视的三个结构TVINSERTSTRUCT、TVITEM、NMTREEVIEW
2010-08-05 18:11 995TVINSERTSTRUCT包含添加新项到树形视控件所使用的信 ... -
剪贴板和OLE拖放
2010-08-05 16:35 1154一、传统剪贴板 ... -
文档/视图结构中的各个部分是如何联系到一起的
2010-08-05 15:39 760文档/视图结构是MFC中最有特色而又有难度的部分,在这当中涉及 ... -
MFC一些函数区别
2010-08-05 13:43 1670GetMessagePos GetCursorPos的区别 ... -
LPTSTR、LPCSTR、LPCTSTR、LPSTR的意义
2010-08-05 13:33 1037UNICODE:它是用两个字节 ...
相关推荐
【VC中ListCtrl经验总结】 ListCtrl是Microsoft Visual C++ MFC库中的一个重要控件,它通常用于显示多列数据,常被用作表格视图。这篇总结将介绍如何有效地使用ListCtrl,尤其是以报告(Report)模式下的一些关键...
### 关于ListCtrl的一些总结 #### 一、ListCtrl简介 `ListCtrl`是Windows编程中的一个重要组件,它提供了一种灵活的方式来展示一系列项,并且能够以不同的视图模式显示这些项,比如列表视图(List)、详细视图...
2. **设置ListCtrl风格及扩展风格**: - `GetWindowLong` 和 `SetWindowLong` 函数用于获取和设置控件的风格。 - `LVS_TYPEMASK` 用于清除当前显示方式。 - `LVS_REPORT` 设置报告视图。 - `LVS_EX_...
总结来说,实现`ListCtrl`的内嵌按钮和自定义绘制涉及了多个技术层面,包括图形绘制、控件创建、事件处理和消息映射。这种高级定制使得`ListCtrl`不仅可以展示数据,还可以增强用户交互性,提供更加丰富的功能。
2. **数据项与子项**:在ListCtrl中,每一行被视为一个数据项,每个数据项可以有多个子项,对应于列中的不同值。 3. **图标支持**:ListCtrl可以显示图标,通常在图标视图模式下使用。 4. **状态指示**:可以设置...
本文将详细总结`ListCtrl`的各种使用方法及其特性。 #### 二、`ListCtrl`概述 `ListCtrl`有四种基本显示模式: 1. **wx.LC_ICON** - 大图标模式 2. **wx.LC_SMALL_ICON** - 小图标模式 3. **wx.LC_LIST** - 列表...
### MFC控件:ListCtrl使用方法总结 #### 一、概述 `ListCtrl`是MFC中的一个重要控件,用于展示列表数据。它能够以不同的视图样式展示信息,如大图标、小图标、列表或详细信息视图等。在MFC中,通过`CListCtrl`类...
ListCtrl控件是MFC框架中用于展示列表数据的一个强大组件,它继承自CListCtrl类,常用于数据库实习项目或其他需要展示结构化信息的场景。ListCtrl控件提供了多种显示样式,包括大图标、小图标、列表和详细报告,以...
### ListCtrl自动换行知识点详解 #### 一、概述 在Windows编程中,`ListCtrl`(列表控件)是一种非常实用的控件,用于显示一系列条目,并且每个条目可以包含多个子项。然而,默认情况下,`ListCtrl`并不支持自动...
### 改变ListCtrl字体和颜色 #### 一、引言 在Windows应用程序开发中,`ListCtrl` 控件是一种非常常见的用户界面组件,用于显示列表形式的数据。然而,默认情况下,`ListCtrl` 的外观相对固定,对于需要个性化UI...
总结,`CustomListCtrl`提供了一种强大的方式来定制和扩展标准的`ListCtrl`控件,允许开发者创建更加丰富和交互性的用户界面。通过深入学习`CustomListCtrlDemo`,我们可以掌握如何在自己的项目中充分利用这一特性,...
**步骤2:初始化ListCtrl** 在视图的OnCreate()方法中,我们初始化ListCtrl。首先,确保在资源编辑器中为视图添加了一个控件ID,例如IDC_LISTCTRL。然后,在OnCreate()中定位控件并设置其样式: ```cpp BOOL ...
总结来说,ListCtrl列表框的重绘涉及到自定义项绘制、背景绘制、Owner Draw特性和图像列表的使用。掌握这些技术,可以帮助你打造出独特且功能丰富的用户界面。在实践中,不断试验和优化,你就能创造出符合项目需求的...
总结一下,在ListCtrl的栏目中加入进度条主要涉及以下步骤: 1. 创建并设置ListCtrl,启用LVS_OWNERDRAWFIXED和LVS_OWNERDATA风格。 2. 为每个列表项创建一个隐藏的CProgressCtrl对象。 3. 重写ListCtrl的`...
总结,`ListCtrl`自绘技术允许我们实现高度定制的列表界面,通过设置行高和使用虚拟列表模式,我们可以有效地管理和展示大量数据。自绘和虚拟列表是Windows编程中提升用户界面质量的重要手段,熟练掌握这两点对于...
m_listctrl.InsertColumn(2, L"item2", LVCFMT_CENTER, 100); // 注意这里重复了,应该是 "item3" m_listctrl.InsertColumn(3, L"item4", LVCFMT_CENTER, 100); // 插入数据项 m_listctrl.InsertItem(0, L"sub11");...
self.listCtrl.InsertColumn(2, "Column 3") for i in range(1, 7): index = self.listCtrl.InsertItem(self.listCtrl.GetItemCount(), str(i)) self.listCtrl.SetItem(index, 1, "Value %d" % i) self.list...
2. **添加列和项目**:向`ListCtrl`中添加列以及具体的项目。 3. **设置复选框风格**:通过设置`ListCtrl`的风格,使其支持复选框显示。 4. **注册事件处理函数**:注册`LVN_ITEMCHANGED`消息的处理函数,即上面提到...
总结来说,"VC2010 ListCtrl实例"是一个MFC编程的学习资源,它教授了如何利用CListCtrl控件和数据库操作技术来构建一个用户界面,展示和管理数据库中的数据。这个实例对于初学者来说是一份宝贵的实践资料,可以帮助...
总结来说,为VC的列表控件ListCtrl增加列和行的内容,主要涉及以下几个步骤: 1. 初始化CListCtrl对象,并设置其风格。 2. 使用InsertColumn函数添加列,设置列标题和宽度。 3. 使用InsertItem函数插入行,并用...