| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> vc >> vc控件 >> 文章正文
VC控件 TreeCtrl 与 ListCtrl 演示        【字体:
VC控件 TreeCtrl 与 ListCtrl 演示
作者:-    文章来源:-    点击数:    更新时间:2006-4-20

下载本文所附源代码


这个例子类似于 Windows 的资源管理器,程序运行界面如图一所示:

图一

主要用到的类有:
CListCtrl,CTreeCtrl,CImageList,CFileFind 和函数SHGetFileInfo()

简述步骤如下:


 1、增加 TreeCtrl 的 TVS_HASBUTTONS,TVS_HASLINES、TVS_LINESATROOT Style,代码如下: 

    DWORD dwStyle = GetWindowLong(m_tree.m_hWnd,GWL_STYLE);
    dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
    SetWindowLong(m_tree.m_hWnd,GWL_STYLE,dwStyle);


 2、为TreeCtrl添加Root项:
     m_hRoot = m_tree.InsertItem("我的电脑");
     InsertItem()的函数原形为
     HTREE99vEM InsertItem( LPCTSTR lpszItem, HTREE99vEM hParent = TVI_ROOT, 
     HTREE99vEM hInsertAfter = TVI_LAST );
     
 3、获取本地逻辑驱动器,并添加:    

void CTreeViewDlg::GetLogicalDrives(HTREE99vEM hParent)
    {
         size_t szAllDriveStrings = GetLogicalDriveStrings(0,NULL);
 char *pDriveStrings = new char[szAllDriveStrings + sizeof(_T(""))];
 GetLogicalDriveStrings(szAllDriveStrings,pDriveStrings);
 size_t szDriveString = strlen(pDriveStrings);
 while(szDriveString > 0)
 {
  m_tree.InsertItem(pDriveStrings,hParent);
  pDriveStrings += szDriveString + 1;
  szDriveString = strlen(pDriveStrings);
 }
    }
      
 4、添加TVN_EXPANDED消息处理函数,当一项展开时,为其子项添加下一级目录:    

void CTreeViewDlg::OnItemexpandedTree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
 NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
 // TODO: Add your control notification handler code here
 TV99vEM item = pNMTreeView->itemNew;
 if(item.hItem == m_hRoot)
 return;
        HTREE99vEM hChild = m_tree.GetChildItem(item.hItem);
 while(hChild)
 {
  AddSubDir(hChild);
  hChild = m_tree.GetNextItem(hChild,TVGN_NEXT);
 }
 *pResult = 0;
    }  
AddSubDir函数功能添加子项,具体代码见示例。 

 5、添加TVN_SELCHANGED消息处理函数,在这个函数里,用GetFullPath()取得选中项的绝 路径(GetFullPath()具体代码看示例),在ListCtrl中添加文件而非文件夹的图标:     

[1] [2] 下一页  

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • CListCtrl 使用演示的例子

  • VC通用控件编程之CList控件

  • VC++在应用程序中使用标准窗…

  • 用ATL和MFC来创建ActiveX控件

  • 动态控件的生成与响应

  • 可设置颜色的静态控件、单选…

  • 支持数据项查找功能的树控制…

  • VC通用控件编程之CImageList…

  • 做一个可编辑的表格控件

  • VC++之List Box/Check List …

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |