日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mfc 监控文件操作_实战经验:使用CFileDialog实现多个文件选择

發布時間:2024/1/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mfc 监控文件操作_实战经验:使用CFileDialog实现多个文件选择 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題

最近需要實現文件選擇的功能,要求是需要彈出系統標準的文件選擇對話框,另外,允許用戶選擇多個文件。

解決方法

MFC中有一個類CFileDialog就是用來做這件事的,而且功能還挺豐富,今天只是使用它的一小部分特性。

直接上代碼

以下代碼實現了一個方法,該方法彈出文件選擇對話框,允許用戶選擇多個文件,讓點擊確定時,以列表的形式,返回用戶選擇的所有文件。

以下是使用上述方法的客戶代碼

代碼解析

1) CFileDiag有如下幾個參數:

CFileDialog(

BOOL bOpenFileDialog,

LPCTSTR lpszDefExt = NULL,

LPCTSTR lpszFileName = NULL,

DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,

LPCTSTR lpszFilter = NULL,

CWnd* pParentWnd = NULL,

DWORD dwSize = 0,

BOOL bVistaStyle = TRUE);

bOpenFileDialog:TRUE: 創建一個打開文件對話框,FALSE: 創建一個文件另存為對話框。

lpszDefExt: 默認文件后綴。如果用戶沒有輸入后綴,則系統會默認追加此后綴。

lpszFileName:初始文件名。文件打開時,默認加載的文件名。

dwFlags:對話框選項,用來定制對話框的各個屬性。

lpszFilter:過濾器,形如:”所有文件 (*.*)|*.*|”。

pParentWnd:指定對話框的父窗口。

dwSize:OPENFILENAME結構體的大小。一般指定為0。

bVistaStyle:啟用Vista風格,僅對VS2008及以后的版本可用。

2) 使用到的風格OFN_ALLOWMULTISELECT來啟用文件的多選。

3) 當用戶選擇完畢后,使用GetStartPosition和GetNextPathName來遍歷所有用戶選擇的文件路徑,這里的路徑是文件的全路徑。

4) 使用vector用來返回用戶選擇的文件列表,返回過程可能會涉及一些對象的拷貝構造,但考慮到不是性能攸關的代碼中執行,所以這點開銷,還是可以接受的。

5) 客戶代碼中,使用了一個vector的引用來接方法的返回值,這樣避免了對象的額外拷貝構造過程。

另一個問題

在一個項目中發現,調試模式下,CFileDialog打開時速度較慢,如果切換到Release模式,就很快能打開。我想這個可能的原因是調試模式的MFC庫因為有許多ASSERT之類的檢查,所以才會顯得比較慢。

總結

1) 使用系統標準的組件設施,有助于提高應用程序界面和操作上的一致性,這樣,用戶比較容易上手。

2) 在調試模式下加入一些ASSERT,有助于在開發早期暴露出程序的內部錯誤,這樣在Release模式就比較放心一點,而且,更重要的是,性能較之調試模式,有很大的提升。這就像平時練習跑步上在兩只腳上綁上沙袋,練得的確很辛苦,但是當歇下沙袋,就會有身輕如燕的感覺。

總結

以上是生活随笔為你收集整理的mfc 监控文件操作_实战经验:使用CFileDialog实现多个文件选择的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。