日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC中打开文件对话框:CFileDlg

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC中打开文件对话框:CFileDlg 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MFC中打開文件對話框:CFileDlg

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?指明一些特定風格。?

lpszFilter?是最重要的一個參數,它指明可供選擇的文件類型和相應的擴展名。參數格式如:?

"Chart?Files?(*.xlc)|*.xlc|Worksheet?Files?(*.xls)|*.xls|Data?Files?(*.xlc;*.xls)|*.xlc;?*.xls|All?Files?(*.*)|*.*||";文件類型說明和擴展名間用?|?分隔,同種類型文件的擴展名間可以用?;?分割,每種文件類型間用?|?分隔,末尾用?||?指明。?

pParentWnd?為父窗口指針。?

創建文件對話框可以使用DoModal(),在返回后可以利用下面的函數得到用戶選擇:?

CString?CFileDialog::GetPathName(?)?得到完整的文件名,包括目錄名和擴展名如:c:?est?est1.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變量。?

例如

{

CString?FilePathName;

CFileDialog?dlg(TRUE);///TRUE為OPEN對話框,FALSE為SAVE?AS對話框

if(dlg.DoModal()==IDOK)

FilePathName=dlg.GetPathName();

}?

相關信息:CFileDialog?用于取文件名的幾個成員函數:

假如選擇的文件是C:WINDOWSTEST.EXE

則:

(1)GetPathName();取文件名全稱,包括完整路徑。取回C:WINDOWSTEST.EXE

(2)GetFileTitle();取文件全名:TEST.EXE

(3)GetFileName();取回TEST

(4)GetFileExt();取擴展名EXE

?

***************************************************************************************************************************************************************

在使用的時候,用一個數組開辟一個大的空間,保存文件的路徑,然后在其他地方使用CVLOADIMAGE來載入圖片,但是也可以使用CFileDialog的一個成員變量中取出。使用中出現的問題有

1.在對話框的m_ofn的設置的時候

dlg.m_ofn.Flags=OFN_ALLOWMULTISELECT|OFN_EXPLORER|OFN_ENABLEHOOK;//改變對話框的樣式,注意的是最后一個OFN_ENABLEHOOK必須加上去

不然就會出錯了

2.空間的開辟足夠大以及初始化為空

?

?

在MFC中使用CFile類和CFileDialog可以很簡單的載入和保存文件……

CFileDialog文件選擇對話框的使用:
首先構造一個對象并提供相應的參數,構造函數原型如下:
CFileDialog::CFileDialog(
BOOL bOpenFileDialog, //為TRUE則顯示打開對話框,為FALSE則顯示保存對話文件對話框
LPCTSTR lpszDefExt = NULL, //默認的文件擴展名
LPCTSTR lpszFileName = NULL, //默認的文件名
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, //設定風格
LPCTSTR lpszFilter = NULL, //列出可供選擇的文件類型和相應的擴展名
CWnd* pParentWnd = NULL //父窗口句柄指針
);
?
LPCTSTR lpszFilter 參數格式如:"Chart Files (*.xlc)|*.xlc|Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|*.xlc;*.xls|All Files (*.*)|*.*||";文件類型說明和擴展名間用 | 分隔,同種類型文件的擴展名間可以用 ; 分割,每種文件類型間用 | 分隔,末尾用 || 指明。

創建文件對話框可以使用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變量。

下面是實現代碼:
//打開文件
//創建文件名緩存(fileBuffer)和文件讀取緩存(rBuffer)
//此處如果不把緩存置0,在后面的設定中就會出錯,如果是動態申請的,請用memset或者for循環把數組清零
char fileBuffer[5010] = {0}, rBuffer[5010] = {0};
int rBSize;
//定義一個CFile類,用來處理文件
CFile in;
//定義一個CFileDialog類,用來顯示標準的打開文件對話框
CFileDialog inDlg(FALSE, NULL, NULL, NULL, _T("自定義文件類型 (*.xxx)|*.xxx|所有文件 (*.*)|*.*||"), NULL);
inDlg.m_ofn.lpstrTitle = _T("打開自定義文件");
//設定一個文件名緩存,因為CFileDialog內置的文件名緩存長度只有200,但是很多時候,文件的路徑遠大于這個數,為了保險起見,所以要自己設定一個文件名緩存
inDlg.m_ofn.lpstrFile = fileBuffer;
//設定緩存長度
inDlg.m_ofn.nMaxFile = 5000;
//顯示對話框,并處理按了確定按鈕的事件
if(inDlg.DoModal() == IDOK) {
?//以只讀方式打開文件
?if(in.Open(inDlg.GetPathName(), CFile::modeRead)) {
??//得到文件長度,從而確定讀取緩存的大小
??rBSize = in.GetLength();
??//避免數組越界,當然在這里也可以動態申請緩存空間
??if(rBSize > 5000) rBSize = 5000;
??//讀入數據
??n.Read(rBuffer, rBSize);
??//關閉文件
??in.Close();
??MessageBox("打開文件成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);
?} else {
??MessageBox("打開文件失敗", "失敗了", MB_ICONSTOP | MB_OK);
?}
}

//保存文件
//創建文件名緩存(fileBuffer)和文件寫入緩存(wBuffer)
//此處如果不把緩存置0,在后面的設定中就會出錯,如果是動態申請的,請用memset或者for循環把數組清零
char fileBuffer[5010] = {0}, wBuffer[5010] = {0};
int wBSize;
CFile out;
CFileDialog outDlg(FALSE, NULL, NULL, NULL, _T("自定義文件類型 (*.xxx)|*.xxx|所有文件 (*.*)|*.*||"), NULL);
//設定保存對話框標題
outDlg.m_ofn.lpstrTitle = _T("保存自定義文件");
//使用自定義的文件名緩存
outDlg.m_ofn.lpstrFile = fileBuffer;
//設定保存文件的默認后綴,如果自己有輸入后綴,則時候輸入的后綴
outDlg.m_ofn.lpstrDefExt = "xxx";
//設定緩存大小
outDlg.m_ofn.nMaxFile = 5000;
//顯示對話框
if(outDlg.DoModal() == IDOK) {
?//得到文件名,并用創建和寫入方式打開
?if(out.Open(outDlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
??//在這里把你要寫入文件的內容寫入緩存,如果寫入的內容過長,可以分次寫入
??//得到寫入當前緩存中內容的長度
??wBSize = strlen(wBuffer);
??//寫入文件
??out.Write(wBuffer, wBSize);
??//關閉文件
??out.Close();
??MessageBox("保存文件成功", "搞定了", MB_ICONEXCLAMATION | MB_OK);
?} else {
??MessageBox("保存文件失敗", "失敗了", MB_ICONSTOP | MB_OK);
?}
}

總結

以上是生活随笔為你收集整理的MFC中打开文件对话框:CFileDlg的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三级久久久 | 久久久噜噜噜久久久 | 午夜神器在线观看 | 日韩久久综合 | 亚洲人成亚洲人成在线观看 | 欧美激情视频一区二区三区在线播放 | 天堂av√ | 91亚洲欧美激情 | 成人免费大片黄在线播放 | 国内少妇精品 | 喷水了…太爽了高h | 一区二区视频在线播放 | 亚洲免费高清 | 亚洲激情欧美 | 国产亚洲精品久久久久丝瓜 | 91射区| 日韩乱码在线观看 | 潘甜甜在线 | 亚洲欧美第一 | 老熟女高潮一区二区三区 | 亚洲精品国产suv一区 | 久久亚洲精品石原莉奈 | 精品无码免费视频 | 69xx免费视频 | 天天色天天操天天 | 国产毛片毛片毛片毛片 | 欧美一级大片 | av大片网址 | 国产成人啪免费观看软件 | 国产毛片不卡 | 国产精品四虎 | 男裸体无遮挡网站 | 国产一区二区三区视频在线 | 久久福利网 | 中国久久久久 | 手机免费在线观看av | 免费看毛片的网站 | 激情欧美一区二区免费视频 | 日韩淫 | 国产欧美在线观看 | 肉嫁高柳家 高清 | 激情亚洲视频 | 性巴克成人免费网站 | 国产freexxxx性播放麻豆 | 欧美国产日韩一区二区三区 | 欧美系列第一页 | 日本黄色免费视频 | 午夜痒痒网 | 视频一区在线免费观看 | 久久99精品久久久久子伦 | 日本特级黄色录像 | 欧美女同视频 | 国产盗摄视频在线观看 | 日本美女动态 | 天天干天天上 | 国产视频成人 | 二级黄色大片 | 亚洲AV无码精品自拍 | 500部大龄熟乱视频 亚洲乱码精品 | 日批视频免费在线观看 | 日韩精品视频在线看 | 亚洲91久久 | 在线免费观看福利 | 黄色a一级 | 四虎新网址 | 国产日韩片 | 亚洲免费在线视频 | 亚洲人成色777777老人头 | 美日韩一级 | 国产又粗又猛又黄又爽的视频 | 国产成人精品片 | 中文字幕日韩精品亚洲一区小树林 | 国产56页 | av大帝在线 | ,午夜性刺激免费看视频 | 18欧美性xxxx极品hd | 波多野结衣在线视频免费观看 | 精品人妻人人做人人爽夜夜爽 | 午夜不卡福利 | 青青草手机视频在线观看 | 亚洲精品福利网站 | 国产吃瓜在线 | 欧美在线va| 五月天激情国产综合婷婷婷 | 欧美 日韩 国产 激情 | 中文字幕免费一区二区 | 第四色在线视频 | 成人做受视频试看60秒 | 国产91在线视频观看 | 久久久99精品免费观看 | 免费av成人 | 国产精品久久一区 | 国产suv一区二区 | 欧美高清视频在线观看 | 日韩少妇一区二区三区 | 草久久久久久 | 日韩欧美精品中文字幕 | 秋霞午夜视频 | 欧美激情 国产精品 |