CFileDialog用法總結

2022-07-21 02:15:11 字數 3048 閱讀 9808

**:

cfiledialog經常用,但經常忘,現歸納整理下,方便今後查詢。

例子:

cfiledialog opendlg( true, "

material file(*.material)|*.material

", null,

ofn_hidereadonly |ofn_overwriteprompt,

"material file(*.material)|*.material||

", this);

cfiledialog建構函式原型如下:

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                       指明一些特定風格。 (預設ofn_hidereadonly | ofn_overwriteprompt)

lpszfilter                     指明可供選擇的檔案型別和相應的副檔名。

pparentwnd                為父視窗指標。

其中,副檔名應遵循下面的格式:

"chart files (*.xlc)|*.xlc| worksheet files (*.xls)|*.xls| data files (*.xlc;*.xls)|*.xlc ; *.xls| all files (*.*)|*.*||";

檔案型別說明和副檔名間用 | 分隔,同種型別檔案的副檔名間可以用 ; 分割,每種檔案型別間用 | 分隔,末尾用 || 指明。

另外過濾器也可以這樣設定:

dl.m_ofn.lpstrfilter = _t("xls檔案\0*.xls\0csv檔案\0*.csv\0xlsx檔案\0*.xlsx\0\0");

注意有時候用 | 字元分隔時會出現錯誤,這時候可以使用 \0 字元

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變數。

dwflags的風格有:

#define ofn_readonly                        0x00000001

#define ofn_overwriteprompt          0x00000002

#define ofn_hidereadonly                0x00000004

#define ofn_nochangedir                 0x00000008

#define ofn_showhelp                      0x00000010

#define ofn_enablehook                   0x00000020

#define ofn_enabletemplate           0x00000040

#define ofn_enabletemplatehandle     0x00000080

#define ofn_novalidate                     0x00000100

#define ofn_allowmultiselect         0x00000200

#define ofn_extensiondifferent       0x00000400

#define ofn_pathmustexist              0x00000800

#define ofn_filemustexist                0x00001000

#define ofn_createprompt               0x00002000

#define ofn_shareaware                  0x00004000

#define ofn_noreadonlyreturn        0x00008000

#define ofn_notestfilecreate                   0x00010000

#define ofn_nonetworkbutton        0x00020000

#define ofn_nolongnames                        0x00040000    

需要注意的是,用了cfiledialog之後,會把程式的當前路徑設定成選中檔案的路徑

所以,如果程式裡有用到io訪問或者資料庫訪問之類的本地操作時,需要注意你的當前路徑

用相對路徑的話就不是原來你的程式路徑了,切記!

CFileDialog使用總結

cfiledialog經常用,但經常忘,現歸納整理下,方便今後查詢。例子 cfiledialog opendlg true,material file material material null,ofn hidereadonly ofn overwriteprompt,material file ...

CFileDialog使用總結

cfiledialog經常用,但經常忘,現歸納整理下,方便今後查詢。例子 cfiledialog opendlg true,material file material material null,ofn hidereadonly ofn overwriteprompt,material file ...

CFileDialog的用法簡介

cfiledialog檔案選擇對話方塊的使用 首先構造乙個物件並提供相應的引數,建構函式原型如下 cfiledialog cfiledialog bool bopenfiledialog,lpctstr lpszdefext null,lpctstr lpszfilename null,dword ...