Win32開發入門(19):瀏覽和開啟檔案

來源:互聯網
上載者:User

在應用程式中,我們很經常要實現的功能,是Open檔案或儲存檔案對話方塊,讓使用者來選擇一個或N個 檔案。本文我將介紹兩種思路,第一種方法較為複雜,第二種方法較為簡單。

方法一:老規矩

這是一種傳統方法,使用GetOpenFileName或者GetSaveFileName函數,看名字就知道,前者用 來開啟檔案,後者是儲存檔案,這兩個函數的用法是一樣的,因此,我只示範其中一個。

無論 你使用哪個函數,都要涉及一個結構體——OPENFILENAME。關於它的成員,我就不一一來說了,挑幾個 有用的扯一扯。

lStructSize:結構的大小,弄個sizeof就行了。

lpstrFilter:設定過濾器。注意啊,這個過濾器字串和.NET中的寫法不同,.NET的寫法是從VB6 繼承過來,可以寫成“垃圾檔案 | *.rbs | 老鼠檔案 | *.mos”,我們這裡不是用“|”來分隔的,而 是用“\0”分隔,而結尾是兩個NULL,即兩個“\0”。

nFilterIndex:過濾器索引,設定了N個濾過的尾碼,設定預設選擇哪個,第一個為1,第二個為2, 第三個為3,依此類推,是從1開始的,不是0。

lpstrFile:檔案名稱,包含完整路徑,當對話方塊 關閉後,我們就是從這個成員把使用者選擇的檔案名稱取出。

nMaxFile:檔案名稱的長度,一定要足 夠大,不然就裝不下了,對路徑長度,系統是有限定的,用MAX_PATH宏就可以了,WCHAR myFilename [MAX_PATH]。

Flags:標誌位。主要決定對話方塊應具備哪些特徵和行為,如是否檢查目標檔案已 存在。

哦,這個可能看了沒感覺,看看例子代碼,一目瞭然。

OPENFILENAME opfn;     WCHAR strFilename[MAX_PATH];//存放檔案名稱     //初始化     ZeroMemory(&opfn, sizeof(OPENFILENAME));     opfn.lStructSize = sizeof(OPENFILENAME);//結構體大小     //設定過濾     opfn.lpstrFilter = L"所有檔案\0*.*\0文字檔\0*.txt\0MP3檔案\0*.mp3\0";     //預設過濾器索引設為1     opfn.nFilterIndex = 1;     //檔案名稱的欄位必須先把第一個字元設為\0opfn.lpstrFile = strFilename;     opfn.lpstrFile[0] = '\0';     opfn.nMaxFile = sizeof(strFilename);     //設定標誌位,檢查目錄或檔案是否存在     opfn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST;     //opfn.lpstrInitialDir = NULL;     // 顯示對話方塊讓使用者選擇檔案     if(GetOpenFileName(&opfn))     {         //在文字框中顯示檔案路徑         HWND hEdt = GetDlgItem(hDlg, IDC_EDTFILENAME);         SendMessage(hEdt, WM_SETTEXT, NULL, (LPARAM)strFilename);     }

ZeroMemory函數前面說過了,你就當作它用來初始化結構就行了。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。