vc瀏覽文件夾
㈠ vc++中如何調用打開文件對話框
MFC 打開保存文件對話框
一、打開文件夾:
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");
㈡ 如何使用VC++的MFC打開一個文件夾
//選擇文件夾
CString GetDirectory()
{
BROWSEINFO bi;
char name[MAX_PATH];
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd();
bi.pszDisplayName = name;
bi.lpszTitle = "選擇文件夾目錄";
bi.ulFlags = BIF_RETURNFSANCESTORS;
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if(idl == NULL)
return "";
CString strDirectoryPath;
SHGetPathFromIDList(idl, strDirectoryPath.GetBuffer(MAX_PATH));
strDirectoryPath.ReleaseBuffer();
if(strDirectoryPath.IsEmpty())
return "";
if(strDirectoryPath.Right(1)!="\\")
strDirectoryPath+="\\";
return strDirectoryPath;
}
㈢ vc之中要調用同文件夾裡面的.c文件應該怎麼辦
將調用的文件放入放入include文件夾即可調用同文件夾裡面的.c文件。
VC++集成了便利的除錯工具,特別是集成了微軟Windows視窗操作系統應用程序介面(Windows API)、三維動畫DirectX API,Microsoft .NET框架。
(3)vc瀏覽文件夾擴展閱讀:
c文件:
從操作系統的角度來看,每一個與主機相連的輸出輸入設備都看作是一個文件。
在程序運行時,常常需要將一些數據(運行的最終結果或中間數據)輸出到磁碟上存放起來,以後需要時再從磁碟中輸入埋殲擾到計算機的內存。這就要用到磁碟文件。
C語言將文件看作是一個字元(位元組)的序列,即一個一個字元(位元組)的數據順序組成。根據數改者據的組成形式,可分為ASCII文件和二進制文件。ASCII文件又稱文本(text)文件,它的每一個位元組可放一個ASCII碼,代表一個字元。
二進制文件是把內存中的數據按其在內存中的存儲形式按原樣輸出到磁碟上存放。因而一個C文件就是一個位元組流或二進制流。它把數據看作是一連串的字元(位元組),而不考慮記錄的界限。換句話說,C語言中文件不是由記錄(record)組成的(這是和PASCAL或其他高級語言不同的)。
在C語言中對文件的存取是以字元(位元組)為單位的。輸出輸入的數據流的開始和結束僅受程序控制而不受物理符號(如回車換行符)控制。也就是說,在輸出時不會自動增加回車換行符作為記錄結束的標志,輸入時不以回車換行符作為記錄的間隔(事實上C文件並不是由記錄構成的)。把這種文件稱為流式文件。C語言允許對文件存取一個字元,這就增加了處彎旦理的靈活性。