2013-09-02 3 views
3

IFileOpenDialogIFileSaveDialog의 대체품을 개발 중입니다.경로가 존재하지 않을 때 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; 
    } 
+0

안녕 @paulg. 나는 cuestion을 편집했다. 이것이 사이트에서 내 두 번째 질문이기 때문에 나는 몰랐다. 문안 인사. – omainegra

+0

수정 내용은 무엇입니까? 문제가 발생한 원래의 시도? –

답변

3

당신은 당신의 자신의 파일 메타 데이터 그래서 SHParseDisplayName() 메타 데이터를 얻을 수있는 실제 파일에 액세스하려고하지 않습니다이 경우, 파서에 추가 데이터를 전달하는 IBindCtx 매개 변수를 사용합니다. 이것은 IShellFolder::ParseDisplayName()SHCreateItemFromParsingName() 및 문서화에 기재되어

포인터 파싱 기능 입출력 같은 파라미터를 전달하는 데 사용 바인드 콘텍스트. 이러한 전달 된 매개 변수는 종종 데이터 소스에 고유하며 데이터 소스 소유자에 의해 문서화됩니다. 예를 들어, 파일 시스템 데이터 소스는 STR_FILE_SYS_BIND_DATA 바인드 컨텍스트 매개 변수를 사용하여 구문 분석중인 이름 (WIN32_FIND_DATA 구조)을 허용합니다. STR_PARSE_PREFER_FOLDER_BROWSING을 전달하여 가능한 경우 파일 시스템 데이터 소스를 사용하여 URL을 구문 분석하도록 지시 할 수 있습니다. CreateBindCtx을 사용하여 바인드 컨텍스트 개체를 만들고 IBindCtx::RegisterObjectParam을 사용하여 값을 채 웁니다. 이들의 전체 목록은 Bind Context String Keys을 참조하십시오.

그리고 MSDN "올드 뉴 것"블로그에 자세히 설명 :

Creating a simple pidl: For the times you care enough to send the very fake

+0

ONT 블로그를 좋아해야합니다 :) 거기에 많은 케이크가 있습니다. –

+0

답장을 보내 주셔서 감사합니다. 링크, 좋은 물건, 나는 또한 질문을 편집합니다. – omainegra

관련 문제