檔案對話方塊的分類

2021-10-07 12:15:43 字數 2335 閱讀 5743

檔案對話方塊的分類

檔案對話方塊分為開啟檔案對話方塊和儲存檔案對話方塊,相信大家在windows系統中經常見到這兩種檔案對話方塊。例如,很多編輯軟體像記事本等都有「開啟」選項,選擇「開啟」後會彈出乙個對話方塊,讓我們選擇要開啟檔案的路徑,這個對話方塊就是開啟檔案對話方塊;除了「開啟」選項一般還會有「另存為」選項,選擇「另存為」後往往也會有乙個對話方塊彈出,讓我們選擇儲存路徑,這就是儲存檔案對話方塊。

正如上面舉例說明的,開啟檔案對話方塊用於選擇要開啟的檔案的路徑,儲存檔案對話方塊用來選擇要儲存的檔案的路徑。

檔案對話方塊類cfiledialog

mfc使用檔案對話方塊類cfiledialog封裝了對檔案對話方塊的操作。cfiledialog類的建構函式原型如下:

explicit 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將建立開啟檔案對話方塊,否則將建立儲存檔案對話方塊。

dwflags:檔案對話方塊的屬性,可以是乙個值也可以是多個值的組合。關於屬性值的定義,可以在msdn中查詢結構體openfilename,元素flags的說明中包含了所有屬性值。預設為ofn_hidereadonly和ofn_overwriteprompt的組合,ofn_hidereadonly表示隱藏檔案對話方塊上的「read only」核取方塊,ofn_overwriteprompt表示在儲存檔案對話方塊中如果你選擇的檔案存在了,就彈出乙個訊息對話方塊,要求確定是否要覆蓋此檔案。

lpszfilter:檔案過濾器,它是由若干字串對組成的乙個字串序列。如果指定了檔案過濾器,則檔案對話方塊中只有符合過濾條件的檔案顯示在檔案列表中待選擇。給大家看看vs2010 msdn中給出的乙個例子:

static tchar based_code szfilter = _t("chart files (*.xlc)|*.xlc|worksheet files (*.xls)|*.xls|data files (*.xlc;*.xls)|*.xlc; *.xls|all files (*.*)|*.*||");

這樣設定過濾器以後,檔案對話方塊的副檔名組合框中將有四個選項:chart files (*.xlc)、worksheet files (*.xls)、data files(*.xlc;*.xls)和all files (*.*),大家可以看到每種檔案的副檔名規定都是乙個字串對,例如chart files的過濾字串是chart files(*.xlc)和*.xlc成對出現的。

pparentwnd:檔案對話方塊的父視窗的指標。

dwsize:openfilename結構體的大小。不同的作業系統對應不同的dwsize值。mfc通過此引數決定檔案對話方塊的適當型別(例如,建立windows 2000檔案對話方塊還是xp檔案對話方塊)。預設為0,表示mfc將根據程式執行的作業系統版本來決定使用哪種檔案對話方塊。

bvistastyle:指定檔案對話方塊的風格,設為true則使用vista風格的檔案對話方塊,否則使用舊版本的檔案對話方塊。此引數僅在windows vista中編譯時適用。

檔案對話方塊也是模態對話方塊,所以在開啟時也需要呼叫cfiledialog類的domodal()成員函式。在開啟檔案對話方塊中點了「開啟」或者在儲存檔案對話方塊中點了「儲存」以後,我們可以使用cfiledialog類的成員函式getpathname()獲取選擇的檔案路徑。

下面列出幾個cfiledialog類的成員函式,我們可以使用它們獲得檔案對話方塊中的各種選擇。

getfileext():獲得選定檔案的字尾名。

getfilename():獲得選定檔案的名稱,包括字尾名。

getfiletitle():獲得選定檔案的標題,即不包括字尾名。

getfolderpath():獲得選定檔案的目錄。

getnextpathname():獲得下乙個選定的檔案的路徑全名。

getpathname():獲得選定檔案的路徑全名。

getreadonlypref():獲得是否「以唯讀方式開啟」。

getstartposition():獲得檔名列表中的第乙個元素的位置。

模態對話方塊 非模態對話方塊 標準對話方塊 檔案對話方塊

模態對話方塊 qdialog 非模態對話方塊 qdialog 標準對話方塊 關於對話方塊 問題對話方塊等 qmessagebox 檔案對話方塊 qfiledialog 標準對話方塊還有 qcolordialog 選擇顏色 qfiledialog 選擇檔案或者目錄 qfontdialog 選擇字型 q...

對話方塊 訊息對話方塊

我們在使用windows系統的過程中經常會見到訊息對話方塊,提示我們有異常發生或提出詢問等。因為在軟體開發中經常用到訊息對話方塊,所以mfc提供了兩個函式可以直接生成指定風格的訊息對話方塊,而不需要我們在每次使用的時候都要去建立對話方塊資源和生成對話方塊類等。這兩個函式就是cwnd類的成員函式mes...

MFC 實現開啟檔案對話方塊 儲存檔案對話方塊

cfiledialog cfiledialog bool bopenfiledialog,lpctstr lpszdefext null,lpctstr lpszfilename null,dword dwflags ofn hidereadonly ofn overwriteprompt,lpct...