Partilhar via


Classe CFileDialog

Encapsula a caixa de diálogo comum de arquivo para o Windows.

class CFileDialog : public CCommonDialog

Comentários

Caixas de diálogo de arquivo comum fornecem uma maneira fácil de implementar em em aberto arquivo and Salvar arquivo sistema autônomo caixas de diálogo (e outras caixas de diálogo seleção de arquivo) de maneira consistente com sistema autônomo padrões do Windows.

Você pode usar CFileDialog sistema autônomo está com o construtor fornecido ou você pode derivar sua própria classe de caixa de diálogo de CFileDialog e escrever um construtor para atender às suas necessidades. Em ambos os casos, essas caixas de diálogo comportará como padrão uma caixa de diálogo MFC porque eles são obtidos com o Classe CCommonDialog.

A aparência e a funcionalidade do CFileDialog com Windows Vista diferem das versões anteriores do Windows. O padrão CFileDialog utiliza automaticamente o novo Windows Vista estilo sem alterações de código se um programa é compilado e executado em Windows Vista. Use o bVistaStyle parâmetro no construtor para substituir manualmente esta atualização automático. A exceção para a atualização automático é caixas de diálogo personalizada.Eles não serão convertidos para o novo estilo.Para obter mais informações sobre o construtor, consulte CFileDialog::CFileDialog.

Observação:

O sistema de controle de ID é diferente nos Windows Vista das versões anteriores do Windows quando você usa um CFileDialog. Você deve atualizar todas as referências a CFileDialog os controles no código antes que você pode transferir seu projeto de uma versão anterior do Windows.

Alguns CFileDialog Não há suporte para métodos em Windows Vista. Consulte o tópico método individuais para obter informações sobre como ele é compatível.Além disso, as seguintes funções herdadas não são suportadas em Windows Vista:

As mensagens de janelas para o CFileDialog classe variam de acordo com qual sistema operacional você está usando. Por exemplo, o Windows XP não suporta CDialog::OnCancel e CDialog::OnOK para o CFileDialog classe. No entanto, Windows Vista oferece suporte a eles. Para obter mais informações sobre as mensagens diferentes que são geradas e a ordem em que são recebidos, consulte Exemplo de CFileDialog: Ordem de eventos de log.

Para usar um CFileDialog objeto, primeiro crie o objeto usando o CFileDialog construtor. After the dialog box has been constructed, you can set or modify any values in the CFileDialog::m_ofn    structure to initialize the values or states of the dialog box's controls.The m_ofn estrutura é do tipo OPENFILENAME. Para obter mais informações, consulte o OPENFILENAME estrutura o Windows SDK.

Após inicializar controles da caixa de diálogo, chame o CFileDialog::DoModal método para exibir a caixa de diálogo para o usuário digite o caminho e o arquivo. DoModal Retorna se o usuário selecionou OK (IDOK) ou o botão cancelar (IDCANCEL).

If DoModal Retorna IDOK, você pode usar um dos CFileDialog's funções de membro público para recuperar as informações de entrada pelo usuário.

CFileDialog inclui vários membros protegidos que permitem que você faça manipulação personalizada de notificação de alterar de caixa de listagem, validação de nome de arquivo e violações de compartilhamento. Esses membros protegidos são funções de retorno de chamada que a maioria dos aplicativos não precisa usar, porque o tratamento padrão é concluído automaticamente.Entradas de MAP da mensagem para essas funções não são necessárias porque eles são funções virtual padrão.

Você pode usar o Windows CommDlgExtendedError função para determinar se ocorreu um erro durante a inicialização da caixa de diálogo e para obter mais informações sobre o erro.

A destruição de CFileDialog objetos é tratado automaticamente. Não é necessário chamar CDialog::EndDialog.

Para permitir ao usuário selecionar vários arquivos, defina o OFN_ALLOWMULTISELECT Sinalizar antes de ligar DoModal. Você deve fornecer seu próprio buffer de nome de arquivo para acomodar a retornado lista de vários nomes de arquivo.Para fazer isso, substituindo m_ofn.lpstrFile com um ponteiro para um buffer você tiver alocado, depois de construir o CFileDialog, mas antes de ligar DoModal.

Quando o usuário aloca seu próprio buffer para acomodar OFN_ALLOWMULTISELECT, o buffer não pode ser maior que 2048 ou que tudo o que é corrompido (2048 é o dimensionar máximo).

Além disso, você deve conjunto **m_ofn. nMaxFile with the number of characters in the buffer pointed to by m_ofn.lpstrFile.**Se você conjunto o número máximo de arquivos a serem selecionados para n, o dimensionar do buffer necessário é n*(_MAX_PATH + 1) + 1. Por exemplo:

CFileDialog dlgFile(TRUE);
CString fileName;
const int c_cMaxFiles = 100;
const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1;
dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize);
dlgFile.GetOFN().nMaxFile = c_cMaxFiles;

dlgFile.DoModal();
fileName.ReleaseBuffer();

CFileDialog conta com o arquivo Commdlg.dll que acompanha o Windows.

Se você derivar uma nova classe de CFileDialog, você pode usar um MAP da mensagem para lidar com todas as mensagens. Para estender a manipulação de mensagem padrão, derivar uma classe de CWnd, adicione um MAP da mensagem à nova classe e fornecem funções de membro para as novas mensagens. Você não precisa fornecer uma função de gancho para personalizar a caixa de diálogo.

Para personalizar a caixa de diálogo, derivar uma classe de CFileDialog, fornecer um modelo de diálogo personalizada e adicione um MAP da mensagem a processo mensagens de notificação de controles estendidas. As mensagens não processadas devem ser passadas para a classe base.

Personalizando a função de gancho não é necessária.

Quando você estiver usando o Windows Vista estilo das CFileDialog, não é possível usar mapas de mensagem e caixa de diálogo modelos. Em vez disso, você precisará usar as interfaces COM para uma funcionalidade semelhante.

Para obter mais informações sobre como usar CFileDialog, consulte Classes de caixa de diálogo comum.

Requisitos

Cabeçalho: afxdlgs.h

Consulte também

Referência

Classe CCommonDialog

Gráfico de hierarquia

Outros recursos

CFileDialog membros