As informações nesta seção se aplica ao estilo do Explorer e caixas de diálogo Abrir e Salvar como de estilo antigo.
Antes de chamar o GetOpenFileName ou GetSaveFileName funções, lpstrFile membro das OPENFILENAME estrutura deve apontar para o buffer para receber o nome do arquivo. O nMaxFile membro deve especificar o tamanho, em bytes (versão ANSI) ou 16-bit caracteres (versão Unicode), da lpstrFile reserva.
Se o usuário especifica um nome de arquivo e clica no botão OK , a caixa de diálogo copia a unidade selecionada, o diretório e o nome do arquivo para o buffer lpstrFile . A função também define o nFileOffset e nFileExtension Membros para os deslocamentos, em bytes (versão ANSI) ou 16-bit caracteres (versão Unicode), desde o início do buffer para o nome do arquivo e a extensão de nome de arquivo, respectivamente.
Para recuperar apenas o nome do arquivo e extensão, defina o membro de lpstrFileTitle para apontar para uma reserva e definir o membro nMaxFileTitle para o tamanho, em bytes (versão ANSI) ou 16-bit caracteres (versão Unicode), da reserva. Como alternativa, você pode passar a lpstrFile reserva em uma chamada para a função GetFileTitle para obter o nome para exibição do arquivo selecionado. Observe, no entanto, que o nome do arquivo que GetFileTitle retorna inclui uma extensão só se for a preferência do usuário para exibir nomes de arquivos.
A caixa de diálogo usa o diretório atual para o processo de chamada como o diretório inicial do qual deseja exibir os arquivos e diretórios. Uso o GetCurrentDirectory ou SetCurrentDirectory funções para obter ou alterar o directório actual. Para especificar um diretório inicial diferente sem alterar o diretório atual, use o membro lpstrInitialDir para especificar o nome de um diretório. A caixa de diálogo muda automaticamente seu diretório atual quando o usuário seleciona um diretório ou unidade diferente. Para impedir que a caixa de diálogo Alterar seu diretório atual, defina o sinalizador OFN_NOCHANGEDIR. Este sinalizador não impede que o usuário alterar diretórios para localizar um arquivo.
Para especificar uma extensão de nome de arquivo padrão, use o membro lpstrDefExt . Se o usuário especifica um nome de arquivo que não tem uma extensão, a caixa de diálogo adiciona a extensão padrão. Se você especificar uma extensão padrão e o usuário especifica um nome de arquivo com uma extensão diferente, a caixa de diálogo define o OFN_EXTENSIONDIFFERENT sinalizador.
Permitir que o usuário selecionar mais de um arquivo de um diretório, defina o Sinalizar de OFN_ALLOWMULTISELECT. Para compatibilidade com aplicativos mais antigos, o padrão caixa de diálogo de seleção de Múltiplo usa a interface do usuário de estilo antigo. Para exibir um Explorer-estilo caixa de diálogo de seleção de múltiplo, você também deve definir o Sinalizar OFN_EXPLORER.
Se o usuário selecionar mais de um arquivo, a reserva apontado pelo lpstrFile membro retorna o caminho para o diretório atual seguido por nomes de arquivo dos arquivos selecionados. O membro nFileOffset é o deslocamento para o primeiro nome de arquivo, e o membro de nFileExtension não é usado. A tabela a seguir descreve a diferença entre o estilo do Explorer e caixas de diálogo do estilo antigo no retornando Múltiplo nomes de arquivo.
| Estilo da caixa de diálogo | Descrição |
|---|---|
| Caixas de diálogo do estilo do Explorer | As seqüências de caracteres de diretório e nome de arquivo são NULL separado, com um caractere nulo extra após o último nome do arquivo. Este formato permite que as caixas de diálogo do estilo do Explorer retornar nomes de arquivo longos que contêm espaços. |
| Caixas de diálogo de estilo antigo | As seqüências de caracteres de diretório e nome de arquivo são separadas por espaços. Para nomes de arquivo com espaços, a função usa nomes de arquivo curtos. |
Você pode usar o FindFirstFile função para converter entre nomes de arquivo longos e curtos.