BOOL OpenFilesVistaUp(HWND hwnd, lFILEINFO *pFInfoList) { IFileOpenDialog *pfd; IFileDialogCustomize *pfdc; FILEOPENDIALOGOPTIONS dwOptions; DWORD dwCookie = 0; CoInitialize(NULL); // CoCreate the dialog object. HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd)); if (SUCCEEDED(hr)) { hr = pfd->QueryInterface(IID_PPV_ARGS(&pfdc)); if(SUCCEEDED(hr)) { hr = pfdc->EnableOpenDropDown(FDIALOG_OPENCHOICES); if (SUCCEEDED(hr)) { hr = pfdc->AddControlItem(FDIALOG_OPENCHOICES, FDIALOG_CHOICE_OPEN, L"&Open"); if (SUCCEEDED(hr)) { hr = pfdc->AddControlItem(FDIALOG_OPENCHOICES, FDIALOG_CHOICE_REPARENT, L"&Reparent hash file"); hr = pfdc->AddControlItem(FDIALOG_OPENCHOICES, FDIALOG_CHOICE_ALLHASHES, L"&Open all hash files"); hr = pfdc->AddControlItem(FDIALOG_OPENCHOICES, FDIALOG_CHOICE_BSD, L"&Force open as BSD-style"); } } } pfdc->Release(); hr = pfd->GetOptions(&dwOptions); if (SUCCEEDED(hr)) { hr = pfd->SetOptions(dwOptions | FOS_ALLOWMULTISELECT | FOS_FORCEFILESYSTEM); if (SUCCEEDED(hr)) { COpenFileListener *ofl = new COpenFileListener(pFInfoList); hr = pfd->Advise(ofl,&dwCookie); if (SUCCEEDED(hr)) { hr = pfd->Show(hwnd); if (SUCCEEDED(hr)) { } pfd->Unadvise(dwCookie); } } } pfd->Release(); } CoUninitialize(); return SUCCEEDED(hr); }
CSaveTextFileDialog::CSaveTextFileDialog( CTextFile::enc e, LPCTSTR lpszDefExt, LPCTSTR lpszFileName, LPCTSTR lpszFilter, CWnd* pParentWnd) : CFileDialog(FALSE, lpszDefExt, lpszFileName, OFN_EXPLORER | OFN_ENABLESIZING | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR, lpszFilter, pParentWnd), m_e(e) { if (SysVersion::IsVistaOrLater()) { // customization has to be done before OnInitDialog IFileDialogCustomize* pfdc = GetIFileDialogCustomize(); pfdc->StartVisualGroup(IDS_TEXTFILE_ENC, ResStr(IDS_TEXTFILE_ENC)); pfdc->AddComboBox(IDC_COMBO1); pfdc->AddControlItem(IDC_COMBO1, CTextFile::ASCII, _T("ANSI")); pfdc->AddControlItem(IDC_COMBO1, CTextFile::LE16, _T("Unicode 16-LE")); pfdc->AddControlItem(IDC_COMBO1, CTextFile::BE16, _T("Unicode 16-BE")); pfdc->AddControlItem(IDC_COMBO1, CTextFile::UTF8, _T("UTF-8")); pfdc->SetSelectedControlItem(IDC_COMBO1, m_e); pfdc->EndVisualGroup(); pfdc->MakeProminent(IDS_TEXTFILE_ENC); pfdc->Release(); } else { SetTemplate(0, IDD_SAVETEXTFILEDIALOGTEMPL); } }