程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 使用三態樹實現多目錄選擇

使用三態樹實現多目錄選擇

編輯:關於VC++

參考:徐景周的三態樹的實現

在選擇目錄時,可以使用系統提供的Shell函數SHBrowseForFolder,這個函數功能比 較強大,在一般情況下使用它基本上能夠滿足要求,但是,這個函數也有一個缺陷,就是不能選擇多個目錄,每次只能返回一個選擇的目錄。可是在實際的工作中,需要 一次返回多個選擇的目錄。我一開始琢磨著用CFileDialog來實現,可是後來發現無 法實現我要的功能。於是乎就采取了一種比較“笨”的辦法,用三態樹實現多目錄選 擇。參考了徐景洲的三態樹的實現和其他一些關於CTreeCtrl控件顯示目錄的代碼後,就動手寫了這個工程。原本不敢拿出來獻丑,可以發現很多網友問多選目錄的問題,而 又沒有比較好的解決方案,於是就拿出來獻獻丑了。

以下就為將CFolderTreeCtrl類添加到工程中的步驟:

1、生成一個新的對話框工程;

2、將FolderTreeCtrl.h,FolderTreeCtrl.cpp文件添加到工程中;

3、將STATEBMP.BMP,folderbmp.bmp文件添加到工程資源中,並設定資源ID。這裡

設置如下folderbmp.bmp -> IDB_BITMAP_LIST

STATEBMP.BMP -> IDB_BITMAP_STATE;

4、定義CTreeCtrl控件為我們的類型CFolderTreeCtrl m_tree;

5、在對話框類中添加代碼:

BOOL CMultiFolderDlg::OnInitDialog()
{
  CDialog::OnInitDialog();
    ......
  m_imgState.Create(IDB_BITMAP_STATE,13, 1, RGB(255,255,255));
  m_imgList.Create(IDB_BITMAP_LIST,16, 1, RGB(255,255,255));

  m_tree.SetImageList(&m_imgList,TVSIL_NORMAL);
  m_tree.SetImageList(&m_imgState,TVSIL_STATE);

  m_tree.DisplayTree(NULL,FALSE);

  return TRUE;
}

6、編譯,運行,便可以得到一個多目錄選擇的對話框了。

具體的實現可以參考工程代碼。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved