2012-07-12 6 views
3

공유 매력을 사용하여 Windows 8 Metro C++ 응용 프로그램에서 이미지를 공유하려고합니다. 이렇게하려면 이미지를 StorageFile ^에 먼저로드해야합니다. imageFile이 헤더 파일에 정의되어내용을 StorageFile^메트로 C++로로드 중

create_task(imageFile->GetFileFromPathAsync("Textures/title.png")).then([this](StorageFile^ storageFile) 
    { 
     imageFile = storageFile; 
    }); 

Windows::Storage::StorageFile^ imageFile; 

이 실제 코드 이것은 아주 사소한 것 같다이 exeption

An invalid parameter was passed to a function that considers invalid parameters fatal. 

를 던져,하지만 것 : 나는 생각이해야처럼 보이는 Metro에서의 공유에 관한 문서는 거의 없으며 Microsoft의 유일한 예는 FilePicker를 사용하여 공유하는 방법을 보여줍니다.

누군가가 올바르게 수행하는 방법을 알고 있다면 매우 감사 할 것입니다.

답변

5

"텍스처가"응용 프로그램 패키지에서 오는 경우, 대신 StorageFile :: GetFileFromApplicationUriAsync을 사용해야합니다

Uri^ uri = ref new Uri("ms-appx:///Assets/Logo.png"); 

create_task(StorageFile::GetFileFromApplicationUriAsync(uri)).then([](task<StorageFile^> t) 
{ 
    auto storageFile = t.get(); 
    auto f = storageFile->FileType; 
}); 
(내가 위에서 보여 같은) 또한 위해 작업 기반 지속을 사용할 수 있습니다

가 검사 예외 정보를 더 가깝게. 귀하의 경우 내부 예외는 : 지정된 경로 (Assets/Logo.png)에 하나 이상의 유효하지 않은 문자가 포함되어 있습니다.

백 슬래시로 변경하면 슬래시가 발생합니다. 지정된 경로 (Assets \ Logo.png)는 절대 경로가 아니며 상대 경로가 허용되지 않습니다.

당신이 GetFileFromPathAsync를 사용하려는 경우 나 응용 프로그램이 설치된 위치를 알아 내기 위해

Windows::ApplicationModel::Package::Current->InstalledLocation 

를 사용하고 거기에서 경로를 구축 추천 할 것입니다.

+0

감사합니다. 솔루션은 매우 사소한 것으로 보인다! –

관련 문제