// prompt for file name - used for open and save as // static function called from app BOOL CWordPadApp::PromptForFileName(CString& fileName, UINT nIDSTitle, DWORD dwFlags, BOOL bOpenFileDialog, int* pType) { ScanForConverters(); CFileDialog dlgFile(bOpenFileDialog); CString title; VERIFY(title.LoadString(nIDSTitle)); dlgFile.m_ofn.Flags |= dwFlags; // dlgFile.m_ofn.Flags &= ~OFN_SHOWHELP; int nIndex = m_nFilterIndex; if (!bOpenFileDialog) { int nDocType = (pType != NULL) ? *pType : RD_DEFAULT; nIndex = GetIndexFromType(nDocType, bOpenFileDialog); if (nIndex == -1) nIndex = GetIndexFromType(RD_DEFAULT, bOpenFileDialog); if (nIndex == -1) nIndex = GetIndexFromType(RD_NATIVE, bOpenFileDialog); ASSERT(nIndex != -1); nIndex++; } dlgFile.m_ofn.nFilterIndex = nIndex; // strDefExt is necessary to hold onto the memory from GetExtFromType CString strDefExt = GetExtFromType(GetTypeFromIndex(nIndex-1, bOpenFileDialog)); dlgFile.m_ofn.lpstrDefExt = strDefExt; CString strFilter = GetFileTypes(bOpenFileDialog); dlgFile.m_ofn.lpstrFilter = strFilter; dlgFile.m_ofn.lpstrTitle = title; dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH); BOOL bRet = (dlgFile.DoModal() == IDOK) ? TRUE : FALSE; fileName.ReleaseBuffer(); if (bRet) { if (bOpenFileDialog) m_nFilterIndex = dlgFile.m_ofn.nFilterIndex; if (pType != NULL) { int nIndex2 = (int)dlgFile.m_ofn.nFilterIndex - 1; ASSERT(nIndex2 >= 0); *pType = GetTypeFromIndex(nIndex2, bOpenFileDialog); } } return bRet; }
BOOL ntCommonDlg::PromptForFileName(CString& fileName, UINT, DWORD dwFlags, BOOL bOpenFileDialog, int* pType) { CFileDialog dlgFile(bOpenFileDialog); CString title; if (bOpenFileDialog) { title=_T("Open image file"); } else { title=_T("Save image file"); } dlgFile.m_ofn.Flags |= dwFlags; int nDocType = (pType != NULL) ? *pType : CXIMAGE_FORMAT_BMP; if (nDocType==0) { nDocType=1; } int nIndex = GetIndexFromType(nDocType, bOpenFileDialog); if (nIndex == -1) { nIndex = 0; } dlgFile.m_ofn.nFilterIndex = nIndex +1; CString strDefExt = GetExtFromType(nDocType).Mid(2,3); dlgFile.m_ofn.lpstrDefExt = strDefExt; CString strFilter = GetFileTypes(bOpenFileDialog); dlgFile.m_ofn.lpstrFilter = strFilter; dlgFile.m_ofn.lpstrTitle = title; dlgFile.m_ofn.lpstrFile = fileName.GetBuffer(_MAX_PATH); BOOL bRet = (dlgFile.DoModal() == IDOK) ? TRUE : FALSE; fileName.ReleaseBuffer(); if (bRet) { if (pType != NULL) { int nIndex = (int)dlgFile.m_ofn.nFilterIndex - 1; ASSERT(nIndex >= 0); *pType = GetTypeFromIndex(nIndex, bOpenFileDialog); } } return bRet; }