代码之家  ›  专栏  ›  技术社区  ›  Gavin Hannah

UWP、C++/Cx文件开放选择器

  •  0
  • Gavin Hannah  · 技术社区  · 7 年前

        // STORAGE FILE
        StorageFile^ saveFile;
    
        // FILE PICKER, FOR SELECTING A SAVE FILE
        FileOpenPicker^ filePicker = ref new FileOpenPicker;
    
        // ARRAY OF FILE TYPES
        Array<String^>^ fileTypes = ref new Array<String^>(1);
        fileTypes->Data[0] = ".txt";
    
        filePicker->ViewMode = PickerViewMode::Thumbnail;
        filePicker->SuggestedStartLocation = PickerLocationId::Desktop;
        filePicker->FileTypeFilter->ReplaceAll(fileTypes);
    
        // THIS SHOULD HOPEFULLY LET US PICK A FILE
    
        saveFile = filePicker->PickSingleFileAsync();
    

    特别是最后一行:

    saveFile = filePicker->PickSingleFileAsync();
    

    我得到以下错误。

    错误C2440:“=”:无法从“Windows::Foundation::IAsyncOperation ^”转换为“Windows::Storage::StorageFile ^”

    1 回复  |  直到 7 年前
        1
  •  1
  •   Nico Zhu    7 年前

    PickSingleFileAsync 是异步方法,返回类型为 Windows::Foundation::IAsyncOperation StorageFile 类型正如汉斯·帕桑所说,你可以使用 create_task() 等待此异步操作。

    create_task(folderPicker->PickSingleFolderAsync()).then([this](StorageFolder^ folder)
    {
        if (folder)
        {
            //do some stuff
        }
        else
        {
            //do some stuff
        }
    });
    

    Asynchronous programming in C++ .