為程序添加“打開文件”對話框和“另存為”對話框
1、相關類: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:定制文件對話框,該參數值與OPENFILENAME結構體中的Flags字段相同;
lpszFilter:用來指定一個或一組文件過濾器,只有選定的文件才會出現在文件列表中;
pParentWnd:用來指定文件對話框的父窗口或擁有者窗口;
2、改變“打開”或“另存為”對話框的標題
CFileDialog::m_ofn.lpstrTitle
3、設置過濾器(設置保存類型)
CFileDialog::m_ofn.lpstrFilter
註意:各過濾字符串對之間及字符串對內部的兩個字符串之間均以\0分割,過濾器結尾必須以\0\0結尾;對於一個字符串對來說,第一個字符串用於描述,如“Text File(*.txt)”;第二個字符串表明使用的文件擴展名,多個擴展名可以用分號隔開,如“*.txt;*.text”;
4、獲取和設置文件的相關屬性
CFileDialog::GetPathName
CFileDialog::GetFileName
CFileDialog::GetFileExt
CFileDialog::GetFileTitle
CFileDialog::GetNextPathName
CFileDialog::GetStartPosition
//“另存為”對話框示例: CFileDialog fileDlg(FALSE, "txt"); fileDlg.m_ofn.lpstrTitle = "我要保存在"; fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0All Files(*.*)\0*.*\0\0"; if(IDOK == fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(), CFile::modeCreate | CFile::modeWrite); file.Write("hello world!", strlen("hello world!")); file.Close(); }
//“打開”對話框示例: CFileDialog fileDlg(TRUE); fileDlg.m_ofn.lpstrTitle = "我要打開"; fileDlg.m_ofn.lpstrFilter = "Text Files(*.txt)\0*.txt\0所有文件(*.*)\0*.*\0\0"; if(IDOK == fileDlg.DoModal()) { CFile file(fileDlg.GetFileName(), CFile::modeRead); char *pBuf; DWORD dwFileLen; dwFileLen = file.GetLength(); pBuf = new char[dwFileLen + 1]; pBuf[dwFileLen] = 0; file.Read(pBuf, dwFileLen); file.Close(); MessageBox(pBuf); }
為程序添加“打開文件”對話框和“另存為”對話框