Pregunta

En Vista, he estado usando un IFileSaveDialog para permitir a los usuarios elegir un "guardar como". carpeta. Los usuarios exportan una carpeta de imágenes, digamos, y necesitan elegir una carpeta de destino nueva o existente.

Brevemente, el código es así:

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

En Windows 7, la opción FOS_PICKFOLDERS parece haber sido rechazada (y está marcada como tal en la API ). El valor de retorno en la llamada SetOptions es E_INVALIDARG . Si uso un IFileOpenDialog, se me permite configurar la opción de carpetas, pero se le solicita al usuario un error al elegir una carpeta inexistente (a pesar de que mis indicadores de configuración sugieren que no lo haga).

¿Hay alguna forma alternativa de hacer que el nuevo IFileDialog actúe como " guardar carpeta " diálogo?

[Para evitar algunos comentarios, la API SHBrowseForFolder todavía existe, pero aún no es una solución aceptable para nuestros decisores de IU.]

¿Fue útil?

Solución

La razón de esto se puede encontrar en la documentación:

FOS_PICKFOLDERS: presente el cuadro de diálogo Abrir que ofrece una selección de carpetas en lugar de archivos.

Uso de FOS_PICKFOLDERS para " Guardar " nunca se suponía que fuera compatible, pero Vista no lo hizo cumplir. Use IFileOpenDialog en su lugar y listo. Está seleccionando una carpeta existente (sin especificar una carpeta para crear), por lo que abrir siempre fue la elección correcta.

Otros consejos

Todavía no he jugado con los cuadros de diálogo de Windows 7, pero descargué el Windows & # 174; API Code Pack justo esta mañana mientras estoy implementando la barra de herramientas de miniaturas y la superposición de iconos en la aplicación en la que estoy trabajando. Probablemente te guiará en la dirección correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top