MFC中開啟 對話方塊中格式過濾的格式

2021-07-05 05:52:00 字數 2242 閱讀 9642

mfc中開啟 對話方塊中格式過濾的格式

前兩天一直沒有搞好這個開啟對話方塊的格式過濾的問題,因為我在vc++ 6.0中按孫鑫老師或者網上大部分的例項來做都沒有成功。

關於這個格式過濾的設定有兩種常用的方法:

第一種就是在建立開啟對話方塊的時候就在建立函式的引數中設定要過濾的格式。

而開啟對話方塊的建立函式是:

cfiledialog::cfiledialog( bool bopenfiledialog, lpctstr lpszdefext = null, lpctstr lpszfilename = null, dword dwflags = ofn_hidereadonly | ofn_overwriteprompt, lpctstr lpszfilter = null, cwnd* pparentwnd = null );引數意義如下:

bopenfiledialog 為true則顯示開啟對話方塊,為false則顯示儲存對話檔案對話方塊。

lpszdefext 指定預設的副檔名。

lpszfilename 指定

預設的檔名。

dwflags 指明一些特定風格。

lpszfilter 是最重要的乙個引數,它指明可供選擇的檔案型別和相應的副檔名。

pparentwnd 為父視窗指標。

所以在建立的時候指定lpszfilters引數的值就可以了。

而關於這個值的指定一般都是:

引數格式如:

"chart files (*.xlc)|*.xlc|worksheet files (*.xls)|*.xls|data files (*.xlc;*.xls)|*.xlc; *.xls|all files (*.*)|*.*||";檔案型別說明和副檔名間用 | 分隔,同種型別檔案的副檔名間可以用 ; 分割,每種檔案型別間用 | 分隔,末尾用 || 指明。

第二種格式:

第二種格式是在建立了開啟對話方塊而又沒有顯示的時候改變的(即是建立了之後還沒有呼叫domodal函式),通過改變(假設變數時m_filedlg)m_filedlg.m_ofn.lpstrfilter="chart files (*.xlc)|*.xlc|worksheet files (*.xls)|*.xls|data files (*.xlc;*.xls)|*.xlc; *.xls|all files (*.*)|*.*||";

上面兩種方法都可以設定過濾的格式,可是在我的編譯器上,通過上面的方法我一直都沒有成功。終於,通過改變一下分隔符,功能實現了,具體如下:

格式基本不用改變,只要把字串中的「|」改為「\0」竟然就成功了。

大家如果也是這樣,可以換換試試。。

還有就是說說這個類的基本實現:

vc中使用cfiledialog進行檔案操作,一般來講你不需要派生新的類,因為基類已經提供了常用的功能。而且在建立並等待對話方塊結束後你可以通過成員函式得到使用者在對話方塊中的選擇。

cfiledialog檔案選擇對話方塊的使用:首先構造乙個物件並提供相應的引數,建構函式原型如下:

cfiledialog::cfiledialog( bool bopenfiledialog, lpctstr lpszdefext = null, lpctstr lpszfilename = null, dword dwflags = ofn_hidereadonly | ofn_overwriteprompt, lpctstr lpszfilter = null, cwnd* pparentwnd = null );

建立檔案對話方塊可以使用domodal(),在返回後可以利用下面的函式得到使用者選擇:

cstring cfiledialog::getpathname( ) 得到完整的檔名,包括目錄名和副檔名如:c:\test\test1.txt

cstring cfiledialog::getfilename( ) 得到完整的檔名,包括副檔名如:test1.txt

cstring cfiledialog::getextname( ) 得到完整的副檔名,如:txt

cstring cfiledialog::getfiletitle ( ) 得到完整的檔名,不包括目錄名和副檔名如:test1

position cfiledialog::getstartposition( ) 對於選擇了多個檔案的情況得到第乙個檔案位置。

cstring cfiledialog::getnextpathname( position& pos ) 對於選擇了多個檔案的情況得到下乙個檔案位置,並同時返回當前檔名。但必須已經呼叫過position cfiledialog::getstartposition( )來得到最初的position變數。

MFC開啟檔案對話方塊

摘自msdn cfiledialog dlgfile true cstring filename const int c cmaxfiles 100 const int c cbbuffsize c cmaxfiles max path 1 1 dlgfile.getofn lpstrfile fi...

MFC開啟檔案對話方塊

僅為學習用!文章出處 cfiledialog類封裝了windows常用的檔案對話方塊。常用的檔案對話方塊提供了一種簡單的與windows標準相一致的檔案開啟和檔案存檔對話方塊功能。cfiledialog的語法 第乙個引數 bopenfiledialog為true或false。true為開啟檔案 fa...

MFC開啟檔案對話方塊

cfiledialog類封裝了windows常用的檔案對話方塊。常用的檔案對話方塊提供了一種簡單的與windows標準相一致的檔案開啟和檔案存檔對話方塊功能。cfiledialog的語法 第乙個引數 bopenfiledialog為true或false。true為開啟檔案 false為儲存檔案。第二...