mfccfiledialog文件夾
❶ mfc序列化保存文件和CFileDialog保存文件的區別
序列化就是按自己定義的格式讀寫二進制文件。
後者是讀寫文件的類
❷ MFC如何實現文件夾選擇對話框
今天寫一個程序,其中一個功能是用對話框來選擇一個文件夾的路徑。可是以前常用的CFileDialog必須指定到文件,選擇一個文件夾只能繼續打開而不能返回這個路徑,CFileDialog貌視也沒有參數可以弄成選擇文件夾的式樣。上網找了找,CSDN里有人提供下面這個函數的用法:
CString
ShowSelectDirectoryDlg(const
CString
&
strDlgTitle)
{
char
szDir[MAX_PATH];
BROWSEINFO
bi;
ITEMIDLIST
*pidl;
bi.hwndOwner
=
this->m_hWnd;
bi.pidlRoot
=
NULL;
bi.pszDisplayName
=
szDir;
bi.lpszTitle
=
strDlgTitle;
bi.ulFlags
=
BIF_RETURNONLYFSDIRS;
bi.lpfn
=
NULL;
bi.lParam
=
0;
bi.iImage
=
0;
pidl
=
SHBrowseForFolder(&bi);
if(pidl
==
NULL)
return
_T();
if(!SHGetPathFromIDList(pidl,
szDir))
return
_T();
這個函數的傳入參數strDlgTitle,就是選擇文件夾對話框的標題欄名稱。只需要模擬這個函數的寫法,添加代碼到特定的消息響應函數里去就可以了。
❸ mfc 用CFileDialog類獲取保存路徑 問題
CFileDialog dlg( FALSE );
if( IDOK == dlg.DoModal() )
{
AfxMessageBox( dlg.GetPathName() );
}
用CFileDialog dlg(FALSE,NULL,NULL,NULL,NULL);我這里也沒有報錯,但參數里並不是全NULL,裡面有個dwFlags,默認參數並不是為NULL。
❹ 關於MFC的CFileDialog類的問題
太復雜,CFileDialog本來就有個文件同名提示選項,
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL );
OFN_OVERWRITEPROMPT?
❺ MFC彈出打開文件對話框(CFileDialog)
CFileDialogdlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"AllFiles(*.*)|*.*||",AfxGetMainWnd());
dlg.m_ofn.lpstrInitialDir="C:\";
設置默認路徑為c:\.
打開文件夾的風格是系統默認的吧,不能修改吧
❻ 【MFC】CFileDialog filedlg(true);什麼意思
CFileDialog filedlg(true);表示創建一個打開文件的對話框
其他性質不變。
函數原型:
CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName =
NULL, DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter =
NULL, CWnd* pParentWnd = NULL );
BOOL bOpenFileDialog
該參數為指定true是Open,false是Save as 對話框。
LPCTSTR lpszDefExt
添加到沒有擴展名文件上的擴展名
LPCTSTR lpszFileName
應該初始選定的文件名
DWORD dwFlags
自定義標志,當要進行多選的時候添加OFN_ALLOWMULTISELECT
LPCTSTR lpszFilter
File of type中的過濾參數
❼ MFC 單文檔中CFileDialog的具體用法步驟
創建工程的時候,默認就有工具條的。
如果你還要加的話,
資源編輯器中編輯,在oncreate函數中,添加代碼掛接資源即可。
❽ 如何讓CFileDialog同時選擇文件和文件夾
提供你一個思路:
自己實現一個對話框程序,對話框中枚舉出目錄和文件,然後選擇等可以自己想怎麼處理就怎麼處理 :)
枚舉用CFileFind等MFC類就可以。
❾ MFC,cfiledialog怎麼打開多個圖
打開多圖示例代碼:
CFileDialogff(TRUE,NULL,NULL,OFN_ENABLESIZING|OFN_ALLOWMULTISELECT|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST,_T("AllFiles(*.*)|*.*||"),this);
intMIN_FILE_NUMBER=20;//最多同時選中文件數
ff.m_ofn.lpstrFile=newTCHAR[_MAX_PATH*MIN_FILE_NUMBER];//重新定義緩沖區大小
memset(ff.m_ofn.lpstrFile,0,_MAX_PATH*MIN_FILE_NUMBER);//初始化定義的緩沖區
ff.m_ofn.nMaxFile=_MAX_PATH*MIN_FILE_NUMBER;
CStringdir;
if(IDOK==ff.DoModal())
{
POSITIONpos=ff.GetStartPosition();
while(NULL!=pos)
{
dir=ff.GetNextPathName(pos);//獲取文件名
;//這里自己將文件名保存到需要的地方
}
}
❿ MFC中請問能不能用一個CFileDialog同時打開多個文件那樣是怎麼設置的呢
CFileDialog 打開多個文件2006-12-01 17:28從CFileDialog派生一個類MFileDlg: 頭文件://///////////////////////////////////////////////////////////////////////////
// MFileDlg dialogclass MFileDlg : public CFileDialog
{
DECLARE_DYNAMIC(MFileDlg)public:
MFileDlg(BOOL bOpenFileDialog, // TRUE for FileOpen, FALSE for FileSaveAs
LPCTSTR lpszDefExt = NULL,
LPCTSTR lpszFileName = NULL,
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
LPCTSTR lpszFilter = NULL,
CWnd* pParentWnd = NULL);
int DoModal();
virtual ~MFileDlg();
protected:
//{{AFX_MSG(MFileDlg)
// NOTE - the ClassWizard will add and remove member functions here.
//}}AFX_MSG TCHAR* m_pszFile;
////////
DECLARE_MESSAGE_MAP()}; 類實現://///////////////////////////////////////////////////////////////////////////
// MFileDlgIMPLEMENT_DYNAMIC(MFileDlg, CFileDialog)MFileDlg::MFileDlg(BOOL bOpenFileDialog, LPCTSTR lpszDefExt, LPCTSTR lpszFileName,
DWORD dwFlags, LPCTSTR lpszFilter, CWnd* pParentWnd) :
CFileDialog(bOpenFileDialog, lpszDefExt, lpszFileName, dwFlags, lpszFilter, pParentWnd)
{
m_pszFile = new TCHAR[2048]; //set a 2K buffer to hold selected files
m_pszFile[0] = '\0'; //initialize pointer;
}
BEGIN_MESSAGE_MAP(MFileDlg, CFileDialog)
//{{AFX_MSG_MAP(MFileDlg)
// NOTE - the ClassWizard will add and remove mapping macros here.
//}}AFX_MSG_MAP
END_MESSAGE_MAP()MFileDlg::~MFileDlg()
{
if (m_pszFile != NULL)
delete [] m_pszFile; //cleanup
}int MFileDlg::DoModal()
{
ASSERT_VALID(this);
ASSERT(m_ofn.Flags & OFN_ALLOWMULTISELECT); //make sure multiple file selection is on m_ofn.lpstrFile = m_pszFile; //initialize the OPENFILENAME structure
m_ofn.nMaxFile = 2048;
return CFileDialog::DoModal();
} 具體使用: MFileDlg dlg( TRUE,_T("TXT"),_T("*.TXT"),
OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
_T("文本文件 (*.txt)|*.txt所有文件 (*.*)|*.*|"));
if(dlg.DoModal()!=IDOK) return FALSE; //取消操作 POSITION pos = dlg.GetStartPosition();
while (pos != NULL)
{
CString strPath = dlg.GetNextPathName(pos);
if (strPath.Find(":\\\\") == 1 && strPath.GetLength() > 4)
{
// this means we have an invalid path that looks like this:
// C:\\cda.dgl
// get rid of extra slash
CString temp;
temp = strPath.Left(3);
temp += strPath.Mid(4);
strPath = temp;
}
m_listFileNames.AddTail(strPath); //CStringList m_listFileNames
TRACE(_T("GetOpenFileName returned %s Files\r\n"),strPath);
}