Classe CFileDialog
Encapsula a caixa de diálogo comuns que é usada para o arquivo operações aberta ou salvamento de arquivo.
class CFileDialog : public CCommonDialog
Membros
Construtores public
Nome |
Descrição |
---|---|
constrói um objeto de CFileDialog . |
métodos públicos
Nome |
Descrição |
---|---|
Adicionar um botão de verificação para a caixa de diálogo. |
|
Adiciona uma caixa de combinação para a caixa de diálogo. |
|
Adiciona um item a um controle recipiente na caixa de diálogo. |
|
Adiciona uma caixa de edição para a caixa de diálogo. |
|
Adicionar um menu para a caixa de diálogo. |
|
sobrecarregado. Adiciona uma pasta para a lista de locais disponíveis para o usuário abrir ou salvar itens. |
|
Adicionar um botão a caixa de diálogo. |
|
Adiciona um grupo de botões de opção (também conhecido como o botão de opção) para a caixa de diálogo. |
|
Adiciona um separador para a caixa de diálogo. |
|
Adiciona conteúdo de texto para a caixa de diálogo. |
|
Atualiza o estado de CFileDialog para coincidir com os parâmetros e sinalizadores armazenados na variável de membro de m_ofn . |
|
Exibe a caixa de diálogo e permite que o usuário para fazer uma seleção. |
|
Permite uma lista suspensa no botão de Abrir ou de Salvar na caixa de diálogo. |
|
Para a adição de elementos a um grupo visual na caixa de diálogo. |
|
Obtém o estado atual de um botão de verificação caixa de seleção () na caixa de diálogo. |
|
Obtém o estado atual de um item em um controle de contêiner encontrado na caixa de diálogo. |
|
Obtém a visibilidade atual e os estados ativados de um determinado controle. |
|
Obtém o texto atual em um controle de caixa de edição. |
|
Retorna a extensão do arquivo selecionado. |
|
Retorna o nome do arquivo selecionado. |
|
Retorna o título do arquivo selecionado. |
|
Retorna o caminho da pasta ou diretório atualmente aberto para um Abrir ou o estilo da caixa de diálogo comuns de Salvar como . |
|
Retorna o objeto COM interno para um objeto personalizado de CFileDialog . |
|
Retorna o objeto COM interno para CFileDialog que é usado como uma caixa de diálogo de arquivo de Abrir . |
|
Retorna o objeto COM interno para CFileDialog que é usado como uma caixa de diálogo de arquivo de Salvar . |
|
Retorna o caminho completo do arquivo após selecionado. |
|
Recupera a estrutura de OPENFILENAME do objeto de CFileDialog . |
|
Retorna o caminho completo do arquivo selecionado. |
|
Retorna o status somente leitura do arquivo selecionado. |
|
Obtém a opção que o usuário fez na caixa de diálogo. |
|
Obtém as opções de usuário em uma caixa de diálogo que permite a seleção múltipla. |
|
Obtém um item específico de controles de contêiner especificados na caixa de diálogo. |
|
Retorna a posição do primeiro elemento da lista de nome de arquivo. |
|
Ocultará o controle específico no estilo de um Abrir ou na caixa de diálogo comuns de Salvar como . |
|
Determina se a caixa de diálogo atual no modo do selecionador da pasta. |
|
Coloque um controle na caixa de diálogo para que ele seja comparada para fora a outros controles adicionados. |
|
Remove um item de um controle recipiente na caixa de diálogo. |
|
Define o estado atual de um botão de verificação caixa de seleção () na caixa de diálogo. |
|
Define o estado atual de um item em um controle de contêiner encontrado na caixa de diálogo. |
|
Define o texto de um item do controle. por exemplo, o texto que acompanha um botão de opção ou um item em um menu. |
|
Define o texto associado com um controle, como o texto do botão ou um rótulo de caixa de edição. |
|
Define a visibilidade atual e os estados ativados de um determinado controle. |
|
Define o texto do controle específico no estilo de um Abrir ou na caixa de diálogo comuns de Salvar como . |
|
Define a extensão de nome de arquivo padrão para um Abrir ou o estilo da caixa de diálogo comuns de Salvar como . |
|
Define o texto atual em um controle de caixa de edição. |
|
Fornece um armazenamento de propriedade que define os valores padrão a ser usado para o item que está sendo salvo. |
|
Define o estado selecionado de um item específico em um grupo de botões de opção ou caixa de combinação encontrado na caixa de diálogo. |
|
Defina o modelo da caixa de diálogo para o objeto de CFileDialog . |
|
Declara um grupo visual na caixa de diálogo. Chamadas subseqüentes a qualquer “adicionam” o método adicione esses elementos a esse grupo. |
|
Atualiza os dados armazenados na variável de membro de m_ofn para coincidir com o estado atual da caixa de diálogo de arquivo. |
métodos protegidos
Nome |
Descrição |
---|---|
Chamado quando o botão é clicado. |
|
Chamado quando a caixa de seleção está marcada/não-verificada. |
|
Chamado quando o controle está ativa. |
|
trata a mensagem de WM_NOTIFY CDN_SELCHANGE . |
|
Valida o nome de arquivo digitado na caixa de diálogo. |
|
trata a mensagem de WM_NOTIFY CDN_FOLDERCHANGE . |
|
trata a mensagem de WM_NOTIFY CDN_INITDONE . |
|
Chamado quando o item de contêiner está selecionado. |
|
Permite que você execute ações personalizadas quando a seleção do arquivo muda. |
|
Violações de compartilhamento handles. |
|
trata a mensagem de WM_NOTIFY CDN_TYPECHANGE . |
Membros públicos de dados
Nome |
Descrição |
---|---|
A estrutura de OPENFILENAME do windows. Fornece acesso aos parâmetros básicos da caixa de diálogo de arquivo. |
Comentários
Caixas de diálogo comuns permite que você implemente caixas de diálogo de arquivo seleção, por exemplo, Abrir Arquivo e Salvar como, de uma maneira de que é consistente com padrões do windows.
Você pode usar CFileDialog como é fornecido com o construtor, ou você pode derivar sua própria classe da caixa de diálogo de CFileDialog e escrever um construtor para atender às suas necessidades. Em ambos os casos, essas caixas de diálogo se comportar como caixas de diálogo padrão MFC porque eles são derivadas de Classe CCommonDialog. CFileDialog depende do arquivo de COMMDLG.DLL que está incluído no windows.
A aparência e funcionalidade de CFileDialog com Windows Vista diferem das versões anteriores do windows. A opção CFileDialog automaticamente usa o novo estilo de Windows Vista sem alterações de código se um programa é compilado e executado em Windows Vista. Use o parâmetro de bVistaStyle no construtor para substituir manualmente esta atualização automática. A exceção à atualização automática é caixas de diálogo personalizadas. Não serão convertidos para o novo estilo. Para obter mais informações sobre o construtor, consulte CFileDialog::CFileDialog.
Dica
O sistema identificação do controle difere em Windows Vista de versões anteriores do windows quando você usa CFileDialog.Você deve atualizar todas as referências para os controles de CFileDialog no código antes que você possa mova seu projeto de uma versão anterior do windows.
Alguns métodos de CFileDialog não são suportados em Windows Vista. Verifique o tópico individual do método para obter informações sobre se o método é suportado. Além de isso, as seguintes funções herdadas não são suportadas em Windows Vista:
As mensagens do windows para a classe de CFileDialog varia com base no sistema operacional que você está usando. Por exemplo, o Windows XP não oferece suporte CDialog::OnCancel e CDialog::OnOK para a classe de CFileDialog . Em o entanto, Windows Vista suportar-los. Para obter mais informações sobre as mensagens diferentes que são geradas e a ordem em que eles são recebidos, consulte exemplo de CFileDialog: Ordem de eventos de log.
Para usar um objeto de CFileDialog , primeiro crie o objeto usando o construtor de CFileDialog . Depois que a caixa de diálogo foi construída, você pode definir ou modificar os valores na estrutura de CFileDialog::m_ofn para inicializar valores ou estados dos controles de caixa de diálogo. A estrutura de m_ofn é do tipo OPENFILENAME. Para obter mais informações, consulte a estrutura de OPENFILENAME em Windows SDK.
Depois que você inicializa todos os controles de caixa de diálogo, chame o método de CFileDialog::DoModal para exibir a caixa de diálogo para que o usuário possa digite o caminho e o nome de arquivo. DoModal retorna se o usuário clicou em OK IDOK () ou o botão cancelar IDCANCEL (). Se DoModal retorna IDOK, você pode usar uma das funções de membro públicas de CFileDialog para recuperar informações colocada em pelo usuário.
Dica
Em Windows Vista, chamadas de vários a IFileDialog::SetFileTypes causa um erro.A segunda chamada a SetFileTypes para qualquer instância de CFileDialog retornará E_UNEXPECTED em Windows Vista.Qualquer ligação de controle SetFileTypesdo método de CFileDialog .Por exemplo, duas chamadas a CFileDialog::DoModal para a mesma instância de CFileDialog geram AFIRMAR.
CFileDialog inclui vários membros protegidos que permitem que você faça manipulação personalizada de violações de compartilhamento, de validação de nome de arquivo, e de notificação de alteração de caixa de listagem. Esses membros protegidos são funções de retorno de chamada que a maioria dos aplicativos não tem que usar como tratamento padrão é executada automaticamente. as entradas de mapa Mensagem- para essas funções não são necessárias porque eles são funções virtuais padrão.
Você pode usar a função de CommDlgExtendedError do windows para determinar se um erro ocorrer durante a inicialização da caixa de diálogo e para aprender mais sobre o erro.
A destruição de objetos de CFileDialog é processada automaticamente. Você não precisa chamar CDialog::EndDialog.
Para permitir que o usuário selecione de arquivos múltiplos, defina o parâmetro de OFN_ALLOWMULTISELECT antes de chamar DoModal. Você deve fornecer seu próprio buffer de nome de arquivo para acomodar a lista retornado de vários nomes de arquivo. Faça isso substituindo m_ofn.lpstrFile com um ponteiro para um buffer que você atribuiu, depois que você constrói CFileDialog, mas antes de chamar DoModal.
Além de isso, você deve definir m_ofn.nMaxFile usando o número de caracteres em buffer apontado por m_ofn.lpstrFile. Se você definir o número máximo de arquivos sejam selecionados a n, o tamanho do buffer é necessário n * (_MAX_PATH + 1) + 1. O primeiro item retornado em buffer é o caminho para a pasta onde os arquivos foram selecionados. Para Windows Vista- estilo caixas de diálogo, diretório e as cadeias de caracteres de nome de arquivo NULL- são finalizadas, com um caractere nulo extra após o nome do arquivo mais recente. Este formato permite que as caixas de diálogo do estilo para retornar nomes de arquivo demorada que incluem espaços. Para caixas de diálogo antiquadas, as cadeias de caracteres de diretório e nome de arquivo são separados por espaços e a função usa nomes de arquivo curtas para nomes de arquivo com espaços.
O exemplo seguinte demonstra como usar um buffer para recuperar e listar vários nomes de arquivo.
#define MAX_CFileDialog_FILE_COUNT 99
#define FILE_LIST_BUFFER_SIZE ((MAX_CFileDialog_FILE_COUNT * (MAX_PATH + 1)) + 1)
CString fileName;
wchar_t* p = fileName.GetBuffer( FILE_LIST_BUFFER_SIZE );
CFileDialog dlgFile(TRUE);
OPENFILENAME& ofn = dlgFile.GetOFN( );
ofn.Flags |= OFN_ALLOWMULTISELECT;
ofn.lpstrFile = p;
ofn.nMaxFile = FILE_LIST_BUFFER_SIZE;
dlgFile.DoModal();
fileName.ReleaseBuffer();
wchar_t* pBufEnd = p + FILE_LIST_BUFFER_SIZE - 2;
wchar_t* start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
{
_tprintf(_T("Path to folder where files were selected: %s\r\n\r\n"), start );
p++;
int fileCount = 1;
while( ( p < pBufEnd ) && ( *p ) )
{
start = p;
while( ( p < pBufEnd ) && ( *p ) )
p++;
if( p > start )
_tprintf(_T("%2d. %s\r\n"), fileCount, start );
p++;
fileCount++;
}
}
Para alterar o tamanho do buffer em resposta ao usuário que selecionar vários nomes de arquivo, você deve derivar uma nova classe de CFileDialog e substituir o método de CFileDialog::OnFileNameChange .
Se você derivado uma nova classe de CFileDialog, você pode usar um mapa de mensagem para tratar todas as mensagens. Para estender tratamento de mensagem padrão, derive uma classe de CFileDialog, adicione um mapa de mensagem para a nova classe, e fornecer funções de membro para as novas mensagens. Você não precisará fornecer uma função de gancho para personalizar a caixa de diálogo.
Para personalizar a caixa de diálogo, derive uma classe de CFileDialog, forneça um modelo personalizado da caixa de diálogo, e adicionar um mapa de mensagens para processar as notificações dos controles estendidos. Passar todas as mensagens não processadas para a classe base. Você não precisa personalizar a função de gancho.
Quando você estiver usando o estilo de Windows Vista de CFileDialog, você não pode usar mapas de mensagem e modelos da caixa de diálogo. Em vez de isso, você deve usar interfaces COM para a funcionalidade semelhante.
Para obter mais informações sobre como usar CFileDialog, consulte Classes de caixa de diálogo comuns.
Hierarquia de herança
CFileDialog
Requisitos
**Cabeçalho:**afxdlgs.h