1. 給一個文件夾路徑D:\Data,裡面有很多個文件,怎麼用MFC程序打開這個文件夾並遍歷文件夾下的所有文件
MFC下,還是用CFileFind類比較方便。
CFileFind ff;
CString strUDDir += "d:\\data\\*.*";
BOOL res = ff.FindFile(strUDDir);
while(res)
{
res = ff.FindNextFile();
//不遍歷子目錄
if(!ff.IsDirectory() && !ff.IsDots())
{
CString strFile = ff.GetFileName();
…// 在這里寫需要的代碼
}
}
ff.Close(); // 不要忘記關閉
2. mfc編程,要用戶選擇一個文件夾,然後返回此文件夾的路徑。不是要選擇文件,是要文件夾的路徑。
BROWSEINFO bInfo;
ZeroMemory(&bInfo, sizeof(bInfo));
bInfo.hwndOwner =GetSafeHwnd();
bInfo.lpszTitle = _T("請選擇需要監視文件夾的路徑: ");
bInfo.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpDlist; //用來保存返回信息的IDList
lpDlist = SHBrowseForFolder(&bInfo) ; //顯示選擇對話框
if(lpDlist != NULL) //用戶按了確定按鈕
{
TCHAR chPath[MAX_PATH]; //用來存儲路徑的字元串
SHGetPathFromIDList(lpDlist, chPath);//把項目標識列表轉化成字元串
CString m_strPath = chPath; //將TCHAR類型的字元串轉換為CString類型的字元串
}
3. 用VC++(MFC)如何實現文件夾的移動
在使用VC++(MFC)進行文件夾移動時,可以利用系統函數int system(const char *command)來執行相應命令。此函數能夠將字元串command轉換為對應的命令。為了實現文件夾移動,我們可以使用DOS命令x。具體調用方法為:
system("x source_dir destination_dir parameter");
這里,source_dir和destination_dir分別指代源文件夾和目標文件夾的路徑。parameter參數可以根據需求設置,如/e表示復制目錄結構,/y表示不提示確認覆蓋。
需要注意的是,這種方法僅適用於文件的復制操作,而非真正的移動。若要實現文件夾的物理移動,還需要額外考慮重命名操作。具體步驟可以是先用x命令將文件夾復制到目標位置,然後刪除原文件夾。這樣,文件夾就實現了從一個位置到另一個位置的移動。
在實際開發過程中,這種方法可能受到一些限制,比如跨分區移動時無法直接使用x命令。對於更復雜的文件夾管理需求,可以考慮使用第三方庫或直接編寫更復雜的邏輯來實現文件夾的移動。
此外,使用system函數執行外部命令時,需要確保程序在安全的環境中運行,避免潛在的安全風險。建議在開發環境中進行充分測試,確保命令執行的穩定性和安全性。
總之,通過上述方法可以實現文件夾的復制操作,但若要實現文件夾的移動,還需額外處理重命名等步驟。開發者在實際應用中需根據具體需求選擇合適的方法。
4. 關於MFC獲取文件夾路徑的問題
如果你寫好了把開文件夾的代碼,再加上這幾句就版OK了
void CMainFrame::OnFileOpen()
{
權// TODO: Add your command handler code here
char szSelected[MAX_PATH];
LPITEMIDLIST pidl;
SUCCEEDED(SHGetPathFromIDList(pidl, szSelected));
}
5. MFC頭文件有哪些
到mfc庫文件夾裡面去找吧,那是相當多的文件。MFC的頭文件不用專門去引用除非是特殊的。關於製作音樂播放器和按鈕圖片,有相關的類。
6. 怎樣用mfc找出文件夾路徑,並讀取文件夾內所有圖片
CFileFind find;
CString Path = lpszPath;
CString lpsz = Path +L"\\";
Path = Path +L"\\*.*";
BOOL IsFind = find.FindFile(Path);
while(IsFind )
{
IsFind=find.FindNextFile();
//如果是"."則不掃描
if(find.IsDots())
continue;
//是目錄,繼續掃描此目錄
else if(find.IsDirectory())
{
CString strPath = lpszPath;
strPath = strPath + L"\\" + find.GetFileName();
ScanDiskFile(strPath);
}
//文件
else
{
//獲得文件的路徑
m_strFile = find.GetFileName();
CString extend = m_strFile.Right(m_strFile.GetLength() - m_strFile.ReverseFind('.') - 1);//取得擴展名
if (extend == m_ext_one | extend == m_ext_two)//m_ext_now為你要查找的文件擴展名
{
m_strArray.Add(lpsz + m_strFile);
}
}
}
find.Close();
m_ext_one、m_ext_two用於指定需要搜索的文件後綴名