diff --git a/src/msw/dirdlg.cpp b/src/msw/dirdlg.cpp index b6a3360b67..223bc85464 100644 --- a/src/msw/dirdlg.cpp +++ b/src/msw/dirdlg.cpp @@ -386,17 +386,26 @@ int wxDirDialog::ShowIFileDialog(WXHWND owner) NULL, wxIID_PPV_ARGS(IShellItem, &folder)); - if ( FAILED(hr) ) - { - wxLogApiError(wxS("SHCreateItemFromParsingName"), hr); - return wxID_NONE; - } - hr = fileDialog->SetFolder(folder); + // Failing to parse the folder name is not really an error, we'll just + // ignore the initial directory in this case, but we should still show + // the dialog. if ( FAILED(hr) ) { - wxLogApiError(wxS("IFileDialog::SetFolder"), hr); - return wxID_NONE; + if ( hr != HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) ) + { + wxLogApiError(wxS("SHCreateItemFromParsingName"), hr); + return wxID_NONE; + } + } + else // The folder was parsed correctly. + { + hr = fileDialog->SetFolder(folder); + if ( FAILED(hr) ) + { + wxLogApiError(wxS("IFileDialog::SetFolder"), hr); + return wxID_NONE; + } } }