Win32開發入門(20):瀏覽檔案夾

來源:互聯網
上載者:User

最近忙於一些相當無聊的事情,還沒忙完,不過,部落格還是要寫的,不然我頭頂上會多了幾塊磚頭 。

在上一篇博文中,我們瀏覽了檔案,今天我們也瀏覽一下目錄,如何?

瀏覽目錄我們 同樣有兩個規矩,用託管類庫的我就不說了,相信大家兩分鐘就能弄好。重點還是說說第二個規矩,用 API方式。我們用到的是Shell函數,一提到Shell,可能有朋友會感到痛苦,因為它很多函數涉及到COM ,不過,也沒什麼了,反正我的哲學理念是立足於實戰。所以,我給大家總結了思路。

就拿今 天我們要用到的SHBrowseForFolder函數來說吧,先說說這個函數的用途吧,一句話概括:顯示一個對 話框,讓你可以選擇一個目錄。

COM對象需要先初始化,再用,用完了釋放,根據這個思路,大 的步驟如下:

1、CoInitialize(NULL); //初始化。

2、調用函數。

3、 CoUninitialize(); //釋放。

這個動作就好比你去租用商家的單車去遊玩,別人只是把資源 (單車)借給你用,你給押金(引用計數),等到你耍完了,再去把資源還給人家。

要調用 SHBrowseForFolder函數,先初始化它的參數,也就是BROWSEINFO結構體,這個傢伙初始化後,將地址 傳給SHBrowseForFolder的lpbi參數。BROWSEINFO結構你得設定以下成員。

PIDLIST_ABSOLUTE pIDLIST;//函數返回的值存在這裡     BROWSEINFO brsInfo;     WCHAR fdpath[MAX_PATH]; //接收選擇目錄的字元數組              。。。。。。。。。。。。。。。。。。。     brsInfo.hwndOwner = hWnd; //擁有者視窗     brsInfo.pidlRoot = NULL; //根目錄為案頭     brsInfo.pszDisplayName = fdpath; //返回的被選擇的路徑     brsInfo.lpszTitle = L"請選擇目錄"; //對話方塊標題     brsInfo.ulFlags= BIF_RETURNONLYFSDIRS | BIF_DONTGOBELOWDOMAIN | BIF_NEWDIALOGSTYLE; //不顯示網路路徑     brsInfo.lpfn = NULL; //沒有回調brsInfo.lParam = NULL; //沒有額外參數

之後就可以調用函數了。

// 初始化COM組件,用完後記得釋放     CoInitialize(NULL);     pIDLIST = SHBrowseForFolder(&brsInfo);     if(pIDLIST)     {         //取出對話方塊中用來顯示結果的控制項         HWND hStatic = GetDlgItem(hfDlg, IDC_DISPLAY);         SendMessage(hStatic,WM_SETTEXT, NULL, (LPARAM)fdpath);     }     CoUninitialize();     // 釋放IDLIST     CoTaskMemFree((LPVOID)pIDLIST);

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

11.11 Big Sale for Cloud

Get Unbeatable Offers with up to 90% Off,Oct.24-Nov.13 (UTC+8)

Get It Now >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。