當前位置:編程學習大全網 - 腳本源碼 - 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;

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);

}

設置對話框的標題:

dlg.m_ofn.lpstrTitle = _T("Open Image");

  • 上一篇:手機尾號3996寓意
  • 下一篇:愛情萬萬歲劇情介紹大結局
  • copyright 2024編程學習大全網