Pergunta

No Vista, tenho vindo a utilizar um IFileSaveDialog para permitir aos usuários escolher um "guardar como" pasta. Usuários exportar uma pasta de imagens, digamos, e necessidade de escolher uma pasta de destino nova ou já existente.

Resumidamente, o código é a seguinte:

IFileSaveDialog* dialog; // created
dialog->SetOptions(FOS_PICKFOLDERS);
dialog->Show(NULL);
dialog->GetResult(&shellItem)

No Windows 7, a opção FOS_PICKFOLDERS parece ter sido anulado (e é marcado como tal em a API ). O valor de retorno na chamada SetOptions é E_INVALIDARG. Se eu usar um IFileOpenDialog, eu estou autorizado a definir a opção de pastas, mas o usuário é solicitado com um erro ao escolher uma pasta inexistente (apesar das minhas bandeiras de ajuste sugerindo para não fazer isso).

Existe uma maneira alternativa de obter o novo IFileDialog para agir como um "save pasta" diálogo?

[Para dirigir fora alguns comentários, a API SHBrowseForFolder ainda existe, mas ainda não é uma solução aceitável para os nossos decisores UI.]

Foi útil?

Solução

A razão para isso pode ser encontrada na documentação:

FOS_PICKFOLDERS:. Presente do Aberto de diálogo oferecendo uma escolha de pastas em vez de arquivos

Usando FOS_PICKFOLDERS para "Save" não deveria ser apoiada mas o Vista não aplicá-la. Use IFileOpenDialog vez e você está pronto para ir. Você está pegando uma pasta existente (não especificar uma pasta para criar), tão aberto sempre foi a escolha correta.

Outras dicas

Eu não tenho jogado ao redor com os do Windows 7 diálogos ainda, mas o download do Windows® API Código Pacote apenas esta manhã como eu estou implementar a barra Thumbnail e Ícone Overlay no aplicativo que eu estou trabalhando. Ele provavelmente vai apontá-lo na direção certa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top