日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VC++打开、保存文件对话框和浏览文件夹对话框

發布時間:2024/4/18 c/c++ 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC++打开、保存文件对话框和浏览文件夹对话框 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一。打開文件夾:

1。CFileDialog實現

CFileDialog hFileDlg(true,NULL ,
?? NULL,
?? OFN_FILEMUSTEXIST | OFN_READONLY | OFN_PATHMUSTEXIST,
?? TEXT("驅動文件 (*.sys)|*.sys|所有文件(*.*)|*.*|"),
?? NULL);
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;
GetModuleFileName(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);
}

總結

以上是生活随笔為你收集整理的VC++打开、保存文件对话框和浏览文件夹对话框的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。