一. List Control:
属性中Style有四种, 其中只有Report才分为多列. 初始化时, 先定义显示方式, 再插入列信息.
DWORD dwExStyle = LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE; // 具体显示效果可以查MSN
m_List.SetExtendedStyle(dwExStyle);
m_List.InsertColumn(0,"File Name",LVCFMT_CENTER,300); //第一列,列名"File Name",居中显示,宽度300;
m_List.InsertItem(nItem,0,i); // 插入一行记录, nItem一般可以等会m_List.GetItemCount()来获取下一插入位置. 0表示第1列; i 在这里是CImageCtrl中图象对列中的第i个图标.
m_List.SetItemText(nItem,0,file.GetFileName()); //设置第nItem行,第1列的值.
m_List.SetItemText(nItem,1,info.szTypeName);
m_List.DeleteAllItems(); //删除所有记录;
m_List.DeleteItem(nItem); //删除第nItem条记录;
m_List.DeleteColumn(nCol); //删除第nCol列
int pos = m_List.GetSelectionMark(); //单击或双击事件时, 获得选项中记录的Index;
CString fileName = m_List.GetItemText(pos,0); //获得第pos行,第0列的内容.
二. Tree Conrol
CTreeCtl m_tree;
DWORD dwStyle = GetWindowLong(m_tree.m_hWnd, GWL_STYLE); // 获得当前树控件的GWL_TYPE显示类型
dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT; //自定义显示类型
SetWindowLong(m_tree.m_hWnd, GWL_STYLE, dwStyle); // 设置显示类型
HTREEITEM m_hRoot = m_tree.InsertItem("My Computer"); // 插入一个根节点. 为HTREEITEM数据类型
m_tree.Expand(m_hRoot,TVE_EXPAND); // 将m_hRoot根结点设置为展开样式
//GetLogicalDrives(m_hRoot); // get the logical Drive (C: E: F: ...)
size_t szAllDrives = GetLogicalDriveStrings(0,NULL); //获取所有的本地驱动盘的盘符, 各盘符用""空格分开, 返回总长度
char* pDriverString = new char[szAllDrives + sizeof(_T(""))];
GetLogicalDriveStrings(szAllDrives, pDriverString);
size_t szDriver = strlen(pDriverString); // strlen 所计算的长度以空格("")为界
while ( szDriver >0 )
{ m_tree.InsertItem(pDriverString, hParent); //在hParent节点下插入一个名为pDriveString的子节点
pDriverString += szDriver + 1;
szDriver = strlen(pDriverString);
}
// TVITEM item = pNMTreeView->itemNew;
HTREEITEM hChild = m_tree.GetChildItem(item.hItem); 获得item.hItem(HTREEITEM类型的父节点)下的一个子节点
CString strtemp = m_tree.GetItemText(HTREEITEM hCurrent); // 获得hCurrent节点的节点名
HTREEITEM hParent = m_tree.GetParentItem(hCurrent); //获得父节点
三.CImageCtrl
CImageCtrl m_ImageList;
初始化时:
m_ImageList.Create(16,16,ILC_COLOR32,10,30); //设置为小图标.10表示图像列表包含的图像数量;30表示图像列表可控制的图像数量。
m_List.SetImageList(&m_ImageList,LVSIL_SMALL);
int i = m_ImageList.Add(info.hIcon); //向m_ImageList中加入一个图标
m_List.InsertItem(nItem,0,i); 在m_List的第nItem行,第0行加入第i个图标
更多CImageCtrl的资料可参看:http://blog.csdn.net/haoyuenan/archive/2007/03/10/1525785.aspx
SHFILEINFO info; //用于记录文件信息的数据类型
SHGetFileInfo(strTemp+file.GetFileName(), 0, &info, sizeof(info), SHGFI_ICON|SHGFI_DISPLAYNAME|SHGFI_TYPENAME);
//第一个参数表示文件的完整路径和文件名(C:/A/b.doc); SHGFI_***为info中需要包含的内容
info.hIcon //图标
info.szTypeName //文件类型