MFC 檔案對話方塊

2022-03-03 19:38:20 字數 2354 閱讀 9272

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

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

lpszdefext:預設的副檔名。如果使用者在檔名編輯框中沒有輸入副檔名,則由lpszdefext指定的擴充套件名將被自動新增到檔名後。預設為null。

lpszfilename:檔名編輯框中顯示的初始檔名。如果為null,則不顯示初始檔名。

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():獲得檔名列表中的第乙個元素的位置。

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

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

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...