㈠ MFC中想實現打開文件或文件夾,該怎麼實現呢
把"通過選擇得到一個文件/文件夾的路徑" 這些代碼實現 寫到某個函數里,不是寫到按鈕實現的函數里就行了。例如:
【以下代碼中 filePathFile就是你想要的路徑】
在主體函數中:
CFileDialog *lpszOpenFile; //定義一個CfileDialog對象
//生成一個對話框
lpszOpenFile = new CFileDialog
(TRUE,"abc.txt","",OFN_FILEMUSTEXIST |OFN_HIDEREADONLY , "文件類型(*.txt)|*.txt|所有文件(*.*)|*.*|");
if(lpszOpenFile->DoModal() == IDOK )//假如點擊對話框確定按鈕
{
filePathName = lpszOpenFile->GetPathName();//得到打開文件的路徑
}
if(!file.Open(filePathName,CFile::modeRead))
{
MessageBox("can not open file!");
return;
}
㈡ MFC 中如何同時實現瀏覽文件和文件夾 並獲得路徑
CString filter;
filter = "??(*.??)|*.??||*.*";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,filter);
if(dlg.DoModal()==IDOK)
{
CString str = dlg.GetPathName();
CEdit *p_Edit = (CEdit*)GetDlgItem(IDC_EDIT??);
p_Edit ->SetWindowText(str);
}
你是不是要像這樣的.
㈢ MFC打開文件對話框怎麼設置默認文件夾
打開文件對話框裡面有一項可以設置打開出示路徑,每次關閉程序的時候,保存路徑(保存到文件或注冊表),下次運行程序的時候讀出來對打開文件對話框相關參數進行設置即可.
㈣ MFC怎麼創建瀏覽文件夾和文件的對話框
{
CString FilePathName;
CFileDialog dlg(TRUE);///TRUE為OPEN對話框,FALSE為SAVE AS對話框
if(dlg.DoModal()==IDOK)
FilePathName=dlg.GetPathName();
}
文件名保存在了FilePathName里,然後處理吧
㈤ C++中用MFC創建的列表控制項如何實現雙擊打開文件列表框中的文件夾
MFC 打開保存文件對話框 .
分類: VS學習 2011-11-14 17:19 331人閱讀 評論(0) 收藏 舉報
一、打開文件夾:
1、CFileDialog實現
CFileDialog hFileDlg(TRUE,NULL,NULL,OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_READONLY,
TEXT("支持的圖像文件 (*.jpg;*.gif;*.bmp;...)|*.jpg;*.gif;*.bmp|專用Tiff圖像文件(*.tiff;*.tif)|*.tiff;*.tif|所有文件(*.*)|*.*||"),NULL);
hFileDlg.m_ofn.nFilterIndex=1;
hFileDlg.m_ofn.hwndOwner=m_hWnd;
hFileDlg.m_ofn.lStructSize=sizeof(OPENFILENAME);
hFileDlg.m_ofn.lpstrTitle=TEXT("打開圖像文件...\0");
hFileDlg.m_ofn.nMaxFile=MAX_PATH;
if(hFileDlg.DoModal() == IDOK)
{
m_path = hFileDlg.GetPathName();
UpdateData(FALSE);
}
2、API實現
OPENFILENAMEA ofn;
char szFile[260];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "音頻文件\0*.wma\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = 0;
if (GetOpenFileNameA(&ofn)==FALSE)
{
return S_FALSE;
}
CString c_save_path=ofn.lpstrFile;
二、保存文件
同上,只不過將
CFileDialog hFileDlg(true,NULL 改為 CFileDialog hFileDlg(false,NULL,
或者將GetOpenFileNameA改為GetSaveFileNameA,即可。
三、瀏覽文件夾對話框
//回調函數
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if(uMsg==BFFM_SELCHANGED||uMsg==BFFM_INITIALIZED)
{
if(uMsg==BFFM_INITIALIZED)
{
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,LPARAM(lpData));
}
}
return 0;
}
TCHAR chPath[255]; //用來存儲路徑的字元串
CString strPath = "";
BROWSEINFO bInfo;
GetMoleFileName(NULL,chPath,MAX_PATH);
strPath =chPath;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner = m_hWnd;
bInfo.lpszTitle = _T("請選擇路徑: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX;
bInfo.lpfn = BrowseCallbackProc;
bInfo.lParam = (LPARAM)strPath.GetBuffer(strPath.GetLength());
LPITEMIDLIST lpDlist; //用來保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //顯示選擇對話框
if(lpDlist != NULL) //用戶按了確定按鈕
{
SHGetPathFromIDList(lpDlist, chPath);//把項目標識列表轉化成字元串
strPath = chPath; //將TCHAR類型的字元串轉換為CString類型的字元串
m_save_path=strPath;
UpdateData(FALSE);
}
設置對話框的標題:
dlg.m_ofn.lpstrTitle = _T("Open Image");
㈥ mfc怎麼實現打開文件夾
voidCXXXDlg::OpenFolder()
{
BROWSEINFObi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
//添加提示語句
bi.lpszTitle=_T("請選擇文件夾");
//添加"新建文件夾項"和"編輯框"
bi.ulFlags=BIF_NEWDIALOGSTYLE|BIF_EDITBOX;
//顯示一個對話框讓讓用戶選擇文件夾
LPITEMIDLISTpidl=SHBrowseForFolder(&bi);
charszFolder[_MAX_PATH];
memset(szFolder,0,sizeof(szFolder));
CStringstrFolder=_T("");
if(pidl!=NULL)
{
SHGetPathFromIDList(pidl,szFolder);
//保存文件夾路徑存
strFolder.Format(_T("%s"),szFolder);
afxMessageBox(strFolder);
}
else
{
return;
}
}
㈦ MFC怎樣創建能同時瀏覽文件夾和文件的對話框
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO)); //指定存放文件的默認文件夾路徑
bi.lpszTitle="請選擇文件夾"; //添加提示語句
bi.ulFlags=0x0040 | BIF_EDITBOX; //添加「新建文件夾項」
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默認路徑打開瀏覽文件夾對話框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夾路徑存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路徑後增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//網上說pidl指向的對象用完應該釋放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
} MessageBox(savepath2);//顯示所選文件夾路徑
這是修改後的代碼,添加了第三四行,親測可用
㈧ 如何在MFC中讓一個按鈕實現打開文件(彈出選擇文件窗口)的功能
1、打開軟體。