一. 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 //文件類型