2015-02-11 76 views
0

我創建了一個帶有菜單選項的MFC程序來保存文件。當我點擊它時,它顯示CFileDialog,我可以選擇我想要保存文件的位置。當我在對話框中單擊保存時,它將關閉對話框,但在此之後它什麼也不做。它並沒有保存我的文件。我究竟做錯了什麼?C++ MFC CFileDialog不會保存

下面是代碼

CFileDialog *dlg = new CFileDialog(FALSE, L"dr", NULL, NULL, 
        L"Drawings (*.dr)|*.dr|" 
        L"All Files||"); 

bool result = dlg->DoModal(); 

if(result) 
{ 
    MessageBox(0, dlg->GetPathName(), L"Draw", 0); 
} 

的布爾結果,純粹是那裏檢查,如果沒有問題/錯誤。

+1

那麼,你必須編寫代碼來保存數據到CFileDialog返回給你的文件路徑。 – Max 2015-02-11 14:26:45

+0

而'DoModal'的返回不是布爾值,它是'IDOK'或'IDCANCEL'。 – 2015-02-11 14:29:30

回答

2

文件保存對話框被稱爲「文件保存對話框」,因爲其標題顯示「保存文件」,它允許您只選擇一個文件。這並不意味着它實際上會保存任何文件。它只是返回給你由用戶選擇的文件名。您仍然負責編寫將使用此文件名保存您的文件的代碼。

+1

謝謝!不知道..當我搜索上面的代碼幾乎所有的答案,因爲這是我第一次用MFC保存,我認爲它應該工作。 – willemjan92 2015-02-11 15:10:53

+0

備註:如果您將正確的標誌傳遞給它,您可以使用'CFileDialog'來選擇多個文件。 – sergiol 2017-04-23 00:45:33

1

CFileDialog不會爲您保存該文件,它僅向您提供一個對話框,供用戶確定應該保存文件的位置(如果!)。在繼續保存之前,應將DoModal()的返回值與IDOK進行比較。從對話框的成員函數中,你可以得到用戶選擇的路徑和文件名。有了這個,你可以創建/打開一個文件並保存你的數據。