在MFC中,可以使用CFileDialog类,但是在如果ATL中,不支持MFC(其实混合可以使用)怎么办呢?其实,Windows编程,就是API的调用:
WCHAR szFile[1024]={0}; LPITEMIDLIST lpItemIDList = NULL; BROWSEINFO bi = {0}; LPMALLOC lpMalloc = NULL; SHGetMalloc(&lpMalloc); bi.hwndOwner = hWndCtl; bi.pidlRoot = NULL; bi.pszDisplayName = szFile; bi.lpszTitle = L"请选择保存文档的目录!"; bi.ulFlags = BIF_BROWSEINCLUDEFILES ; bi.lpfn = NULL; bi.lParam = 0; lpItemIDList = SHBrowseForFolder(&bi); if (!lpItemIDList) return 0; SHGetPathFromIDList(lpItemIDList, szFile); lpMalloc->Free(lpItemIDList); lpMalloc->Release(); CComBSTR sFile; sFile.Append(szFile);
上面这段代码是打开选择文件夹的。
其中hWndCtl是一个窗口的HWND。
下面这一段则是打开文件选项de
OPENFILENAME ofn = {0}; WCHAR szFile[1024]={0}; ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner=this->m_hWnd; ofn.lpstrFile = szFile; ofn.nMaxFile = 1024; ofn.lpstrTitle = L"保存文件夹"; ofn.Flags = OFN_EXPLORER|OFN_OVERWRITEPROMPT ; // specify filter ofn.lpstrFilter = TEXT("Word文档 (*.doc)/0*.doc/0"); CComBSTR sFile; if (GetSaveFileName(&ofn)) sFile.Append(ofn.lpstrFile); else return 0;