IFileOpenDialog
및 IFileSaveDialog
의 대체품을 개발 중입니다.경로가 존재하지 않을 때 SHParseDisplayName
은 거의가 (적어도 IFileOpenDialog
) 작업,하지만 나는 새 파일 이름을 (사용자가 GetResult()
방법에 저장 선택이 끝난 것을) 나타내는 IShellItem
을 반환 할 때, 나는 작업 SHParseDisplayName
를 얻을 수 없다 이 새 파일 이름. 나는 항상 "The system cannot find the file specified"
이라는 오류 메시지를 받는다.
몇 가지 예 또는 다른 해결책을 내 문제로 고맙게 생각합니다.
편집 :
HRESULT CFileSaveDialogProxy::GetResult(__RPC__deref_out_opt IShellItem **ppsi)
{
//return m_Original->GetResult(ppsi);
WCHAR pszPath[MAX_PATH] = {0};
HRESULT hr = ERROR_CANCELLED;
if (m_SelectedFiles.size() > 0)
{
QString s = m_SelectedFiles.at(0);
s.replace(QString("/"),QString("\\"));
s.toWCharArray(pszPath);
//PCIDLIST_ABSOLUTE pIdL = ILCreateFromPath(pszPath);
PIDLIST_ABSOLUTE pIdL = NULL;
SFGAOF out;
hr = SHParseDisplayName(pszPath,NULL,&pIdL,SFGAO_FILESYSTEM,&out);
if (SUCCEEDED(hr))
{
hr = SHCreateItemFromIDList(pIdL, IID_PPV_ARGS(ppsi));
}
}
return hr;
}
안녕 @paulg. 나는 cuestion을 편집했다. 이것이 사이트에서 내 두 번째 질문이기 때문에 나는 몰랐다. 문안 인사. – omainegra
수정 내용은 무엇입니까? 문제가 발생한 원래의 시도? –