Classe CFileDialog

Encapsula a caixa de diálogo comum usada para operações de salvamento ou abertura de arquivos.

Sintaxe

class CFileDialog : public CCommonDialog

Membros

Construtores públicos

Nome Descrição
CFileDialog::CFileDialog Constrói um objeto CFileDialog.

Métodos públicos

Nome Descrição
CFileDialog::AddCheckButton Adiciona um botão de seleção à caixa de diálogo.
CFileDialog::AddComboBox Adiciona uma caixa de combinação à caixa de diálogo.
CFileDialog::AddControlItem Adiciona um item a um controle de contêiner no diálogo.
CFileDialog::AddEditBox Adiciona uma caixa de edição ao diálogo.
CFileDialog::AddMenu Adiciona um menu ao diálogo.
CFileDialog::AddPlace Sobrecarregado. Adiciona uma pasta à lista de locais disponíveis para o usuário abrir ou salvar itens.
CFileDialog::AddPushButton Adiciona um botão ao diálogo.
CFileDialog::AddRadioButtonList Adiciona um grupo de botões de opção ao diálogo.
CFileDialog::AddSeparator Adiciona um separador ao diálogo.
CFileDialog::AddText Adiciona conteúdo de texto ao diálogo.
CFileDialog::ApplyOFNToShellDialog Atualiza o estado de CFileDialog para corresponder aos parâmetros e sinalizadores armazenados na variável de membro m_ofn.
CFileDialog::DoModal Exibe a caixa de diálogo e permite que o usuário faça uma seleção.
CFileDialog::EnableOpenDropDown Habilita uma lista suspensa no botão Abrir ou Salvar no diálogo.
CFileDialog::EndVisualGroup Interrompe a adição de elementos a um grupo visual no diálogo.
CFileDialog::GetCheckButtonState Obtém o estado atual de um botão de seleção (caixa de seleção) no diálogo.
CFileDialog::GetControlItemState Obtém o estado atual de um item em um controle de contêiner encontrado no diálogo.
CFileDialog::GetControlState Obtém a visibilidade atual e os estados habilitados de determinado controle.
CFileDialog::GetEditBoxText Obtém o texto atual em um controle de caixa de edição.
CFileDialog::GetFileExt Retorna a extensão do arquivo selecionado.
CFileDialog::GetFileName Retorna o nome do arquivo selecionado.
CFileDialog::GetFileTitle Retorna o título do arquivo selecionado.
CFileDialog::GetFolderPath Recupera o caminho da pasta ou do diretório aberto no momento para uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.
CFileDialog::GetIFileDialogCustomize Recupera o objeto COM interno para um objeto CFileDialog personalizado.
CFileDialog::GetIFileOpenDialog Recupera o objeto COM interno para um CFileDialog que é usado como uma caixa de diálogo Abrir arquivo.
CFileDialog::GetIFileSaveDialog Recupera o objeto COM interno para um CFileDialog que é usado como uma caixa de diálogo Salvar arquivo.
CFileDialog::GetNextPathName Retorna o caminho completo do próximo arquivo selecionado.
CFileDialog::GetOFN Recupera a estrutura OPENFILENAME do objeto CFileDialog.
CFileDialog::GetPathName Retorna o caminho completo do arquivo selecionado.
CFileDialog::GetReadOnlyPref Retorna o status somente leitura do arquivo selecionado.
CFileDialog::GetResult Obtém a escolha feita pelo usuário no diálogo.
CFileDialog::GetResults Obtém as escolhas do usuário em um diálogo que permite várias seleções.
CFileDialog::GetSelectedControlItem Obtém um item específico de controles de contêiner especificados no diálogo.
CFileDialog::GetStartPosition Retorna a posição do primeiro elemento da lista de nomes de arquivo.
CFileDialog::HideControl Oculta o controle especificado em uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.
CFileDialog::IsPickFoldersMode Determina o diálogo atual no modo seletor de pastas.
CFileDialog::MakeProminent Coloca um controle no diálogo para que ele se destaque em comparação com outros controles adicionados.
CFileDialog::RemoveControlItem Remove um item de um controle de contêiner no diálogo.
CFileDialog::SetCheckButtonState Define o estado atual de um botão de seleção (caixa de seleção) no diálogo.
CFileDialog::SetControlItemState Define o estado atual de um item em um controle de contêiner encontrado no diálogo.
CFileDialog::SetControlItemText Define o texto de um item de controle. Por exemplo, o texto que acompanha um botão de opção ou um item em um menu.
CFileDialog::SetControlLabel Define o texto associado a um controle, como texto de botão ou rótulo de caixa de edição.
CFileDialog::SetControlState Define a visibilidade atual e os estados habilitados de determinado controle.
CFileDialog::SetControlText Define o texto do controle especificado em uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.
CFileDialog::SetDefExt Define a extensão de nome de arquivo padrão para uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.
CFileDialog::SetEditBoxText Define o texto atual em um controle de caixa de edição.
CFileDialog::SetProperties Fornece um repositório de propriedades que define os valores padrão a serem usados para o item que está sendo salvo.
CFileDialog::SetSelectedControlItem Define o estado selecionado de um item específico em um grupo de botões de opção ou em uma caixa de combinação encontrada no diálogo.
CFileDialog::SetTemplate Define o modelo da caixa de diálogo para o objeto CFileDialog.
CFileDialog::StartVisualGroup Declara um grupo visual no diálogo. Chamadas subsequentes a qualquer método "add" adicionam esses elementos a esse grupo.
CFileDialog::UpdateOFNFromShellDialog Atualiza os dados armazenados na variável de membro m_ofn para corresponder ao estado atual da caixa de diálogo do arquivo.

Métodos protegidos

Nome Descrição
CFileDialog::OnButtonClicked Chamado quando o botão é clicado.
CFileDialog::OnCheckButtonToggled Chamado quando a caixa de seleção é marcada/desmarcada.
CFileDialog::OnControlActivating Chamado quando o controle está ativo.
CFileDialog::OnFileNameChange Manipula a mensagem WM_NOTIFY CDN_SELCHANGE.
CFileDialog::OnFileNameOK Valida o nome do arquivo inserido na caixa de diálogo.
CFileDialog::OnFolderChange Manipula a mensagem WM_NOTIFY CDN_FOLDERCHANGE.
CFileDialog::OnInitDone Manipula a mensagem WM_NOTIFY CDN_INITDONE.
CFileDialog::OnItemSelected Chamado quando o item de contêiner está sendo selecionado.
CFileDialog::OnLBSelChangedNotify Permite que você execute ações personalizadas quando a seleção de arquivo é alterada.
CFileDialog::OnShareViolation Manipula violações de compartilhamento.
CFileDialog::OnTypeChange Manipula a mensagem WM_NOTIFY CDN_TYPECHANGE.

Membros de Dados Públicos

Nome Descrição
CFileDialog::m_ofn A estrutura OPENFILENAME do Windows. Fornece acesso aos parâmetros básicos da caixa de diálogo de arquivo.

Comentários

As caixas de diálogo de arquivo comuns permitem implementar caixas de diálogo de seleção de arquivos, por exemplo, Abrir Arquivo e Salvar como, de uma maneira consistente com os padrões do Windows.

Você pode usar CFileDialog da forma em que se encontra com o construtor fornecido ou pode derivar sua própria classe de caixa de diálogo de CFileDialog e escrever um construtor de acordo com suas necessidades. Em ambos os casos, essas caixas de diálogo se comportarão como caixas de diálogo MFC padrão porque são derivadas da Classe CCommonDialog. CFileDialog depende do arquivo COMMDLG.DLL incluído no Windows.

Tanto a aparência quanto a funcionalidade do CFileDialog com Windows Vista ou versão posterior diferem das versões anteriores do Windows. O padrão CFileDialog usa automaticamente o novo estilo do Windows Vista ou versão posterior sem alterações de código se um programa é compilado e executado no Windows Vista ou versão posterior. Use o parâmetro bVistaStyle no construtor para substituir manualmente essa atualização automática. A exceção à atualização automática envolve caixas de diálogo personalizadas. Elas não serão convertidas no novo estilo. Para saber mais sobre o construtor, confira CFileDialog::CFileDialog.

Observação

O sistema de ID de controle difere no Windows Vista ou versão posterior das versões anteriores do Windows quando você usa um CFileDialog. Você precisa atualizar todas as referências aos controles CFileDialog no código antes de poder portar seu projeto de uma versão anterior do Windows.

Não há suporte a alguns métodos CFileDialog no Windows Vista ou versão posterior. Confira o tópico do método específico para saber se o método tem suporte. Além disso, as seguintes funções herdadas não têm suporte no Windows Vista ou versão posterior:

As mensagens do Windows para a classe CFileDialog variam de acordo com o sistema operacional que você está usando. Por exemplo, o Windows XP não dá suporte a CDialog::OnCancel e CDialog::OnOK para a classe CFileDialog. No entanto, o Windows Vista e os sistemas operacionais posteriores dão suporte a eles. Para saber mais sobre as diferentes mensagens geradas e a ordem em que elas são recebidas, confira CFileDialog Sample: Logging Event Order.

Para usar um objeto CFileDialog, primeiro crie o objeto usando o construtor CFileDialog. Depois que a caixa de diálogo for construída, você poderá definir ou modificar valores na estrutura CFileDialog::m_ofn para inicializar os valores ou estados dos controles da caixa de diálogo. A estrutura m_ofn é do tipo OPENFILENAME. Para mais informações, confira a estrutura OPENFILENAME no SDK do Windows.

Depois de inicializar os controles da caixa de diálogo, chame o método CFileDialog::DoModal para exibir a caixa de diálogo e permitir que o usuário digite o caminho e o nome do arquivo. DoModal retorna se o usuário clicou no botão OK (IDOK) ou Cancelar (IDCANCEL). Se DoModal retornar IDOK, você poderá usar uma das funções de membro público de CFileDialog para recuperar a entrada de informações pelo usuário.

Observação

No Windows Vista ou versão posterior, várias chamadas para IFileDialog::SetFileTypes causam um erro. A segunda chamada para SetFileTypes de qualquer instância de um CFileDialog retornará E_UNEXPECTED no Windows Vista ou posterior. Algumas funções de método CFileDialog chamam SetFileTypes. Por exemplo, duas chamadas para CFileDialog::DoModal da mesma instância de um CFileDialog gera ASSERT.

CFileDialog inclui vários membros protegidos que permitem que você faça o tratamento personalizado de violações de compartilhamento, validação de nome de arquivo e 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 precisa usar porque o tratamento padrão é executado automaticamente. As entradas de mapa de mensagens para essas funções não são obrigatórias porque são funções virtuais padrão.

É possível usar a função CommDlgExtendedError do Windows para determinar se ocorreu um erro durante a inicialização da caixa de diálogo e para saber mais sobre o erro.

A destruição de objetos CFileDialog é tratada automaticamente. Você não precisa chamar CDialog::EndDialog.

Para permitir que o usuário selecione vários arquivos, defina o sinalizador OFN_ALLOWMULTISELECT antes de chamar DoModal. Você deve fornecer seu próprio buffer de nome de arquivo para acomodar a lista retornada com vários nomes de arquivo. Faça isso substituindo m_ofn.lpstrFile por um ponteiro para um buffer que você alocou, depois de construir o CFileDialog, mas antes de chamar DoModal.

Além disso, você precisa definir m_ofn.nMaxFile usando o número de caracteres no buffer apontado por m_ofn.lpstrFile. Se você definir o número máximo de arquivos a serem selecionados como n, o tamanho do buffer exigido será n * (_MAX_PATH + 1) + 1. O primeiro item retornado no buffer é o caminho para a pasta em que os arquivos foram selecionados. Para o Windows Vista ou caixas de diálogo de estilo posterior, as cadeias de caracteres de nome de diretório e de arquivo são terminadas em nulo, com um caractere nulo extra após o nome do último arquivo. Esse formato permite que as caixas de diálogo no estilo do Explorador retornem nomes de arquivos longos que incluem espaços. Para caixas de diálogo de estilo antigo, as cadeias de caracteres de nome de arquivo e diretório são separadas por espaços e a função usa nomes de arquivo curtos para nomes de arquivo com espaços.

O exemplo a seguir 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 seleciona vários nomes de arquivo, você deve derivar uma nova classe CFileDialog e substituir o método CFileDialog::OnFileNameChange.

Se você derivar uma nova classe de CFileDialog, poderá usar um mapa de mensagens para lidar com qualquer mensagem. Para estender o tratamento de mensagens padrão, derive uma classe de CFileDialog, adicione um mapa de mensagens à nova classe e forneça 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, derive uma classe de CFileDialog, forneça um modelo de caixa de diálogo personalizado e adicione um mapa de mensagem para processar as mensagens de notificação dos controles estendidos. Transmita mensagens não processadas à classe base. Você não precisa personalizar a função de gancho.

Quando você estiver usando o estilo do Windows Vista ou posterior de CFileDialog, não será possível usar mapas de mensagens e modelos de caixa de diálogo. Você precisará usar as interfaces COM para uma funcionalidade semelhante.

Para saber mais sobre como usar CFileDialog, confira Classes comuns de diálogo.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CFileDialog

Requisitos

Cabeçalho: afxdlgs.h

CFileDialog::AddCheckButton

Adiciona um botão de seleção à caixa de diálogo.

HRESULT AddCheckButton(
    DWORD dwIDCtl,
    const CString& strLabel,
    BOOL bChecked);

Parâmetros

dwIDCtl
A ID do botão de seleção a ser adicionado.

strLabel
O nome do botão de seleção.

bChecked
Um booliano que indica o estado atual do botão de seleção. TRUE se marcado; caso contrário, FALSE

Comentários

CFileDialog::AddComboBox

Adiciona uma caixa de combinação à caixa de diálogo.

HRESULT AddComboBox(DWORD dwIDCtl);

Parâmetros

dwIDCtl
A ID da caixa de combinação a ser adicionada.

Comentários

CFileDialog::AddControlItem

Adiciona um item a um controle de contêiner no diálogo.

HRESULT AddControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Parâmetros

dwIDCtl
A ID do controle de contêiner ao qual adicionar o item.

dwIDItem
A ID do item.

strLabel
Texto do item.

Comentários

CFileDialog::AddEditBox

Adiciona uma caixa de edição ao diálogo.

HRESULT AddEditBox(
    DWORD dwIDCtl,
    const CString& strText);

Parâmetros

dwIDCtl
A ID da caixa de edição a ser adicionada.

strText
O nome da caixa de edição.

Comentários

CFileDialog::AddMenu

Adiciona um menu ao diálogo.

HRESULT AddMenu(
    DWORD dwIDCtl,
    const CString& strLabel);

Parâmetros

dwIDCtl
A ID do menu a ser adicionado.

strLabel
O nome do menu.

Comentários

CFileDialog::AddPlace

Adiciona uma pasta à lista de locais disponíveis para o usuário abrir ou salvar itens.

void AddPlace(
    LPCWSTR lpszFolder,
    FDAP fdap = FDAP_TOP) throw();

void AddPlace(
    IShellItem* psi,
    FDAP fdap = FDAP_TOP) throw();

Parâmetros

lpszFolder
Um caminho para a pasta a ser disponibilizada para o usuário. Isso só pode ser uma pasta.

fdap
Especifica onde a pasta é colocada na lista.

Psi
Um ponteiro para um IShellItem que representa a pasta a ser disponibilizada para o usuário. Isso só pode ser uma pasta.

Comentários

CFileDialog::AddPushButton

Adiciona um botão ao diálogo.

HRESULT AddPushButton(
    DWORD dwIDCtl,
    const CString& strLabel);

Parâmetros

dwIDCtl
A ID do botão a ser adicionado.

strLabel
O nome do botão.

Comentários

CFileDialog::AddRadioButtonList

Adiciona um grupo de botões de opção ao diálogo.

HRESULT AddRadioButtonList(DWORD dwIDCtl);

Parâmetros

dwIDCtl
A ID do grupo de botões de opção a ser adicionado.

Comentários

CFileDialog::AddSeparator

Adiciona um separador ao diálogo.

HRESULT AddSeparator(DWORD dwIDCtl);

Parâmetros

dwIDCtl
A ID da adição do separador.

Comentários

CFileDialog::AddText

Adiciona texto ao diálogo.

HRESULT AddText(
    DWORD dwIDCtl,
    const CString& strText);

Parâmetros

dwIDCtl
A ID do texto a ser adicionado.

strText
O nome do texto.

Comentários

CFileDialog::ApplyOFNToShellDialog

Atualiza o estado atual do CFileDialog com base nos valores armazenados na estrutura de dados m_ofn.

void ApplyOFNToShellDialog();

Comentários

Nas versões do Windows antes do Windows Vista, a estrutura de dados OPENFILENAME do membro era sincronizada continuamente com o estado do CFileDialog. Todas as alterações na variável de membro m_ofn foram refletidas imediatamente no estado da caixa de diálogo. Além disso, todas as alterações no estado da caixa de diálogo atualizam imediatamente a variável de membro m_ofn.

No Windows Vista ou posterior, os valores na variável de membro m_ofn e no estado do CFileDialog não têm garantia de serem sincronizados. Essa função força o estado do CFileDialog a ser atualizado para corresponder à estrutura de m_ofn. O Windows chama essa função automaticamente durante CFileDialog::DoModal.

Para saber mais sobre como usar a classe CFileDialog no Windows Vista ou posterior, confira Classe CFileDialog.

Exemplo

Confira o exemplo de CFileDialog::UpdateOFNFromShellDialog.

CFileDialog::CFileDialog

Chame essa função para construir uma caixa de diálogo de arquivo padrão do Windows.

explicit CFileDialog(
    BOOL bOpenFileDialog,
    LPCTSTR lpszDefExt = NULL,
    LPCTSTR lpszFileName = NULL,
    DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
    LPCTSTR lpszFilter = NULL,
    CWnd* pParentWnd = NULL,
    DWORD dwSize = 0,
    BOOL bVistaStyle = TRUE);

Parâmetros

bOpenFileDialog
[in] O parâmetro que especifica o tipo de caixa de diálogo a ser criada. Defina-o como TRUE para construir uma caixa de diálogo Abrir Arquivo. Defina-o como FALSE para construir uma caixa de diálogo Salvar Arquivo Como.

lpszDefExt
[in] A extensão de nome de arquivo padrão. Se o usuário não incluir uma extensão conhecida (que tenha uma associação no computador do usuário) na caixa Nome do arquivo, a extensão especificada por lpszDefExt será automaticamente anexada ao nome do arquivo. Se esse parâmetro for NULL, nenhuma extensão será acrescentada.

lpszFileName
[in] O nome do arquivo inicial que aparece na caixa Nome do arquivo. Se NULL, nenhum nome de arquivo inicial será exibido.

dwFlags
[in] Uma combinação de um ou mais sinalizadores que você pode usar para personalizar a caixa de diálogo. Para obter uma descrição desses sinalizadores, confira a estrutura OPENFILENAME no SDK do Windows. Se você modificar o membro da estrutura m_ofn.Flags, use um operador bit a bit OR em suas alterações para manter o comportamento padrão intacto.

lpszFilter
[in] Uma série de pares de cadeia de caracteres que especificam filtros que você pode aplicar ao arquivo. Se você especificar filtros de arquivo, somente arquivos que correspondem aos critérios de filtro serão exibidos na lista Arquivos. Confira a seção Comentários para saber mais sobre como trabalhar com filtros de arquivo.

pParentWnd
[in] Um ponteiro para a janela pai ou de proprietário da caixa de diálogo do arquivo.

dwSize
[in] O tamanho da estrutura OPENFILENAME. Esse valor depende da versão do sistema operacional. O MFC usou esse parâmetro para determinar o tipo apropriado de caixa de diálogo a ser criada. O tamanho padrão 0 significa que o código MFC determinará o tamanho correto da caixa de diálogo a ser usada com base na versão do sistema operacional na qual o programa é executado.

bVistaStyle
[in] Nota Esse parâmetro está disponível no Visual Studio 2008 e versão posterior e faz com que o diálogo de novo estilo seja usado somente se você estiver executando no Windows Vista ou posterior.

O parâmetro que especifica o estilo do diálogo do arquivo. Defina-o como TRUE para usar os novos diálogos de arquivo de estilo Vista. Caso contrário, o estilo antigo de caixas de diálogo será usado. Confira a seção Comentários para saber mais sobre como executar no Vista.

Comentários

Uma caixa de diálogo Abrir Arquivo ou Salvar Arquivo Como é construída, dependendo do valor de bOpenFileDialog.

Especificar uma extensão padrão usando lpszDefExt pode não produzir o comportamento esperado, porque raramente é previsível quais extensões têm associações de arquivo no computador do usuário. Se você precisar de mais controle sobre a anexação de uma extensão padrão, poderá derivar sua própria classe de CFileDialog e substituir o método CFileDialog::OnFileNameOK para executar sua própria manipulação de extensão.

Para permitir que o usuário selecione vários arquivos, defina o sinalizador OFN_ALLOWMULTISELECT antes de chamar DoModal. Você deve fornecer seu próprio buffer de nome de arquivo para armazenar a lista retornada com vários nomes de arquivo. Faça isso substituindo m_ofn.lpstrFile por um ponteiro para um buffer que você alocou, depois de construir o CFileDialog, mas antes de chamar DoModal. Além disso, você precisa definir m_ofn.nMaxFile usando o número de caracteres no buffer apontado por m_ofn.lpstrFile. Se você definir o número máximo de arquivos a serem selecionados como n, o tamanho do buffer exigido será n*(_MAX_PATH + 1) + 1. Por exemplo:

#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 permitir que o usuário redimensione uma caixa de diálogo no estilo do Explorador usando o mouse ou o teclado, defina o sinalizador OFN_ENABLESIZING. A configuração desse sinalizador só será necessária se você fornecer um procedimento de gancho ou um modelo personalizado. O sinalizador funciona apenas com uma caixa de diálogo no estilo do Explorador; caixas de diálogo de estilo antigo não podem ser redimensionadas.

O parâmetro lpszFilter é usado para determinar o tipo de nome de arquivo que um arquivo precisa ter para ser exibido na lista de arquivos. A primeira cadeia de caracteres no par de cadeias de caracteres descreve o filtro; a segunda cadeia de caracteres indica a extensão de nome de arquivo a ser usada. Várias extensões podem ser especificadas usando um ponto e vírgula (o caractere ';') como delimitador. A cadeia de caracteres termina com dois caracteres de barra vertical (||), seguidos por um caractere NULL. Você também pode usar um objeto CString para esse parâmetro.

Por exemplo, o Microsoft Excel permite que os usuários abram arquivos com extensões .xlc (gráfico) ou .xls (planilha), entre outros. O filtro para Excel pode ser gravado como:

static TCHAR BASED_CODE szFilter[] = _T("Chart Files (*.xlc)|*.xlc|")
   _T("Worksheet Files (*.xls)|*.xls|Data Files (*.xlc;*.xls)|")
   _T("*.xlc; *.xls|All Files (*.*)|*.*||");

No entanto, se você planeja usar essa cadeia de caracteres para atualizar diretamente a estrutura OPENFILENAME, deve delimitar suas cadeias de caracteres com o caractere nulo, '\0', em vez das barras verticais ('|').

O parâmetro bVistaStyle é aplicável somente quando executado no Windows Vista ou posterior. Em versões anteriores do Windows, esse parâmetro é ignorado. Se bVistaStyle estiver definido como TRUE, quando você compilar um programa com o Visual Studio 2008 ou versão posterior, o novo Diálogo de Arquivo de estilo Vista será usado. Caso contrário, o Diálogo de Arquivo de estilo MFC anterior será usado.

Não há suporte a modelos de diálogo em diálogos com base em bVistaStyle

Exemplo

Confira o exemplo de CFileDialog::DoModal.

CFileDialog::DoModal

Chame essa função para exibir a caixa de diálogo de arquivo comum do Windows e permitir que o usuário navegue por arquivos e diretórios e insira um nome de arquivo.

virtual INT_PTR DoModal();

Valor de Devolução

IDOK ou IDCANCEL. Se IDCANCEL for retornado, chame a função CommDlgExtendedError do Windows para determinar se ocorreu um erro.

IDOK e IDCANCEL são constantes que indicam se o usuário selecionou o botão OK ou Cancelar.

Comentários

Se você quiser inicializar as várias opções de caixa de diálogo de arquivo definindo membros da estrutura m_ofn, faça isso antes de chamar DoModal, mas depois que o objeto de diálogo for construído.

Por exemplo, se você quiser permitir que o usuário selecione vários arquivos, defina o sinalizador OFN_ALLOWMULTISELECT antes de chamar DoModal, conforme mostrado no exemplo de código neste tópico.

Quando o usuário clica nos botões OK ou Cancelar da caixa de diálogo ou seleciona a opção Fechar no menu de controle da caixa de diálogo, o controle é retornado ao seu aplicativo. Em seguida, você pode chamar outras funções de membro para recuperar as configurações ou informações que o usuário inseriu na caixa de diálogo.

DoModal é uma função virtual substituída na classe CDialog.

Exemplo

void CMyClass::OnFileOpen()
{
   // szFilters is a text string that includes two file name filters:
   // "*.my" for "MyType Files" and "*.*' for "All Files."
   TCHAR szFilters[]= _T("MyType Files (*.my)|*.my|All Files (*.*)|*.*||");

   // Create an Open dialog; the default file name extension is ".my".
   CFileDialog fileDlg(TRUE, _T("my"), _T("*.my"),
      OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, szFilters);
   
   // Display the file dialog. When user clicks OK, fileDlg.DoModal() 
   // returns IDOK.
   if(fileDlg.DoModal() == IDOK)
   {
      CString pathName = fileDlg.GetPathName();
   
      // Implement opening and reading file in here.

      //Change the window's title to the opened file's title.
      CString fileName = fileDlg.GetFileTitle();
   
      SetWindowText(fileName);
   }
}

CFileDialog::EnableOpenDropDown

Habilita uma lista suspensa no botão Abrir ou Salvar no diálogo.

HRESULT EnableOpenDropDown(DWORD dwIDCtl);

Parâmetros

dwIDCtl
A ID da lista suspensa.

Comentários

CFileDialog::EndVisualGroup

Interrompe a adição de elementos a um grupo visual no diálogo.

HRESULT EndVisualGroup();

Valor de Devolução

Retorna S_OK se tiver êxito; caso contrário, um valor de erro.

Comentários

CFileDialog::GetCheckButtonState

Recupera o estado atual de um botão de seleção (caixa de seleção) no diálogo.

HRESULT GetCheckButtonState(
    DWORD dwIDCtl,
    BOOL& bChecked);

Parâmetros

dwIDCtl
A ID da caixa de seleção.

bChecked
O estado da caixa de seleção. TRUE indica marcado; FALSE indica desmarcado.

Comentários

CFileDialog::GetControlItemState

Recupera o estado atual de um item em um controle de contêiner encontrado no diálogo.

HRESULT GetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF& dwState);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item.

dwState
Uma referência a uma variável que recebe um de mais valores da enumeração CDCONTROLSTATE que indica o estado atual do controle.

Comentários

CFileDialog::GetControlState

Recupera a visibilidade atual e os estados habilitados de determinado controle.

HRESULT GetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF& dwState);

Parâmetros

dwIDCtl
O ID do controle.

dwState
Uma referência a uma variável que recebe um ou mais valores da enumeração CDCONTROLSTATE que indica o estado atual do controle.

Comentários

CFileDialog::GetEditBoxText

Recupera o texto atual em um controle de caixa de edição.

HRESULT GetEditBoxText(
    DWORD dwIDCtl,
    CString& strText);

Parâmetros

dwIDCtl
A ID da caixa de edição.

strText
O valor do texto.

Comentários

CFileDialog::GetFileExt

Chame essa função para recuperar a extensão do nome de arquivo inserido na caixa de diálogo.

CString GetFileExt() const;

Valor de Devolução

A extensão do nome do arquivo.

Comentários

Por exemplo, se o nome do arquivo inserido for DATA.TXT, GetFileExt retornará "TXT".

Se m_ofn.Flags tiver o sinalizador OFN_ALLOWMULTISELECT definido, essa cadeia de caracteres conterá uma sequência de cadeias de caracteres terminadas em nulo, sendo a primeira cadeia de caracteres o caminho de diretório do grupo de arquivos selecionado, seguido pelos nomes de todos os arquivos selecionados pelo usuário. Para recuperar nomes de caminho de arquivo, use as funções de membro GetStartPosition e GetNextPathName.

CFileDialog::GetFileName

Chame essa função para recuperar o nome do arquivo inserido na caixa de diálogo.

CString GetFileName() const;

Valor de Devolução

O nome do arquivo.

Comentários

O nome do arquivo inclui o prefixo e a extensão. Por exemplo, GetFileName retornará "TEXT.DAT" para o arquivo C:\FILES\TEXT.DAT.

Se m_ofn.Flags tiver o sinalizador OFN_ALLOWMULTISELECT definido, você deverá chamar GetStartPosition e GetNextPathName para recuperar um nome de caminho de arquivo.

CFileDialog::GetFileTitle

Chame essa função para recuperar o título do arquivo inserido na caixa de diálogo.

CString GetFileTitle() const;

Valor de Devolução

O título do arquivo.

Comentários

O título do arquivo inclui apenas seu prefixo, sem o caminho ou a extensão. Por exemplo, GetFileTitle retornará "TEXT" para o arquivo C:\FILES\TEXT.DAT.

Se m_ofn.Flags tiver o sinalizador OFN_ALLOWMULTISELECT definido, essa cadeia de caracteres conterá uma sequência de cadeias de caracteres terminadas em nulo, sendo a primeira cadeia de caracteres o caminho de diretório do grupo de arquivos selecionado, seguido pelos nomes de todos os arquivos selecionados pelo usuário. Por esse motivo, use as funções de membro GetStartPosition e GetNextPathName para recuperar o próximo nome de arquivo na lista.

Exemplo

Confira o exemplo de CFileDialog::DoModal.

CFileDialog::GetFolderPath

Chame essa função de membro para recuperar o caminho da pasta ou diretório aberto no momento para uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.

CString GetFolderPath() const;

Valor de Devolução

Um objeto CString que contém a pasta ou o diretório aberto no momento.

Comentários

A caixa de diálogo precisa ter sido criada com o estilo OFN_EXPLORER; caso contrário, o método falhará com uma instrução.

Você só pode chamar esse método enquanto a caixa de diálogo está sendo exibida. Depois que a caixa de diálogo for fechada, essa função não operará mais e o método falhará com uma instrução assert.

CFileDialog::GetIFileDialogCustomize

Recupera um ponteiro para o objeto COM interno de determinado CFileDialog.

IFileDialogCustomize* GetIFileDialogCustomize();

Valor de Devolução

O ponteiro para o objeto COM interno do CFileDialog. É sua responsabilidade liberar esse ponteiro adequadamente.

Comentários

Use essa função somente no Windows Vista ou posterior com um objeto que tenha bVistaStyle definido como TRUE. Se você usar essa função quando bVistaStyle for FALSE, ela retornará NULL no modo de versão e lançará uma declaração no modo de depuração.

Para saber mais sobre a interface IFileDialogCustomize, confira IFileDialogCustomize.

Exemplo

Este exemplo recupera o objeto COM interno. Para executar este exemplo de código, você precisará compilá-lo no Windows Vista ou posterior.

// Get the interface pointer
IFileDialogCustomize *customDlgPtr = m_myFileDialogPtr->GetIFileDialogCustomize();

// Make sure that it is not null
if (customDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   customDlgPtr->Release();
}

CFileDialog::GetIFileOpenDialog

Recupera um ponteiro para o objeto COM interno de determinado CFileDialog.

IFileOpenDialog* GetIFileOpenDialog();

Valor de Devolução

O ponteiro para o objeto COM interno do CFileDialog. É sua responsabilidade liberar esse ponteiro adequadamente.

Comentários

Use essa função somente no Windows Vista ou posterior com um objeto que tenha bVistaStyle definido como TRUE. Essa função retornará NULL se CFileDialog não for uma caixa de diálogo Abrir ou se bVistaStyle estiver definido como FALSE. Nesse caso final, a função retorna apenas NULL no modo de versão; no modo de depuração, ela gerará uma instrução assert.

Para saber mais sobre a interface IFileOpenDialog, confira IFileOpenDialog.

Exemplo

Este exemplo recupera o objeto COM interno. Para executar esse código, você precisará compilá-lo no Windows Vista ou posterior.

// Get the interface pointer
IFileOpenDialog * openDlgPtr = m_myFileDialogPtr->GetIFileOpenDialog();

// Make sure that it is not null
if ( openDlgPtr != NULL )
{
    //
    // Perform any interface functionality here
    //

    // Release the pointer
    openDlgPtr->Release();
}

CFileDialog::GetIFileSaveDialog

Recupera um ponteiro para o objeto COM interno de determinado CFileDialog.

IFileSaveDialog* GetIFileSaveDialog();

Valor de Devolução

O ponteiro para o objeto COM interno do CFileDialog. É sua responsabilidade liberar esse ponteiro adequadamente.

Comentários

Use essa função somente no Windows Vista ou posterior com um objeto que tenha bVistaStyle definido como TRUE. Essa função retornará NULL se CFileDialog não for uma caixa de diálogo Salvar ou se bVistaStyle estiver definido como FALSE. Nesse caso final, a função retorna apenas NULL no modo de versão; no modo de depuração, ela gerará uma instrução assert.

Para saber mais sobre a interface IFileSaveDialog, confira IFileSaveDialog.

Exemplo

Este exemplo recupera o objeto COM interno. Para executar este exemplo de código, você precisará compilá-lo no Windows Vista ou posterior.

// Get the interface pointer
IFileSaveDialog *saveDlgPtr = m_myFileDialogPtr->GetIFileSaveDialog();

// Make sure that it is not null
if (saveDlgPtr != NULL)
{
   //
   // Perform any interface functionality here
   //

   // Release the pointer
   saveDlgPtr->Release();
}

CFileDialog::GetNextPathName

Chame essa função para recuperar o próximo nome de arquivo do grupo selecionado na caixa de diálogo.

CString GetNextPathName(POSITION& pos) const;

Parâmetros

pos
Uma referência a um valor POSITION retornado por uma chamada de função GetNextPathName ou GetStartPosition anterior. NULL se o final da lista tiver sido alcançado.

Valor de Devolução

O caminho completo do arquivo.

Comentários

O caminho do nome do arquivo inclui o título do arquivo mais o caminho de diretório inteiro. Por exemplo, GetNextPathName retornará "C:\FILES\TEXT.DAT" para o arquivo C:\FILES\TEXT.DAT. Você poderá usar GetNextPathName em um loop de iteração para frente se estabelecer a posição inicial com uma chamada para GetStartPosition.

Se a seleção consistir em apenas um arquivo, esse nome de arquivo será retornado.

CFileDialog::GetOFN

Recupera a estrutura OPENFILENAME associada.

const OPENFILENAME& GetOFN() const;

OPENFILENAME& GetOFN();

Valor de Devolução

Uma estrutura OPENFILENAME.

Comentários

Use a segunda versão dessa função para inicializar a aparência de uma caixa de diálogo Abrir Arquivo ou Salvar Arquivo Como depois que ela for construída, mas antes de ser exibida com a função de membro DoModal. Por exemplo, você pode definir o membro lpstrTitle de m_ofn como a legenda que deseja que a caixa de diálogo tenha.

CFileDialog::GetPathName

Chame essa função para recuperar o caminho completo do arquivo inserido na caixa de diálogo.

CString GetPathName() const;

Valor de Devolução

O caminho completo do arquivo.

Comentários

O caminho do nome do arquivo inclui o título do arquivo mais o caminho de diretório inteiro. Por exemplo, GetPathName retornará "C:\FILES\TEXT.DAT" para o arquivo C:\FILES\TEXT.DAT.

Se m_ofn.Flags tiver o sinalizador OFN_ALLOWMULTISELECT definido, essa cadeia de caracteres conterá uma sequência de cadeias de caracteres terminadas em nulo, sendo a primeira cadeia de caracteres o caminho de diretório do grupo de arquivos selecionado, seguido pelos nomes de todos os arquivos selecionados pelo usuário. Por esse motivo, use as funções de membro GetStartPosition e GetNextPathName para recuperar o próximo nome de arquivo na lista.

Exemplo

Confira o exemplo de CFileDialog::DoModal.

CFileDialog::GetReadOnlyPref

Chame essa função para determinar se a caixa de seleção Somente Leitura foi marcada nas caixas de diálogo Abrir e Salvar Arquivo Como padrão do Windows.

BOOL GetReadOnlyPref() const;

Valor de Devolução

Diferente de zero se a caixa de seleção Somente Leitura na caixa de diálogo estiver selecionada; caso contrário, 0.

Comentários

Você pode ocultar a caixa de seleção Somente Leitura definindo o estilo OFN_HIDEREADONLY no construtor CFileDialog.

Observação

O Windows Vista ou objetos CFileDialog de estilos posteriores não dão suporte a essa função. A tentativa de usar essa função em um estilo de CFileDialog do Windows Vista ou posterior gerará CNotSupportedException.

CFileDialog::GetResult

Recupera a escolha feita pelo usuário no diálogo.

IShellItem* GetResult() throw();

Valor de Devolução

Um ponteiro para um IShellItem que representa a escolha do usuário.

Comentários

CFileDialog::GetResults

Recupera as escolhas do usuário em um diálogo que permite várias seleções.

IShellItemArray* GetResults() throw();

Valor de Devolução

Um ponteiro para um IShellItemArray por meio do qual os itens selecionados no diálogo podem ser acessados.

Comentários

CFileDialog::GetSelectedControlItem

Recupera um item específico do controle de contêiner especificado na caixa de diálogo.

HRESULT GetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD& dwIDItem);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item que o usuário selecionou no controle.

Comentários

CFileDialog::GetStartPosition

Chame essa função de membro para recuperar a posição do primeiro nome de caminho de arquivo na lista se m_ofn.Flags tiver o sinalizador OFN_ALLOWMULTISELECT definido.

POSITION GetStartPosition() const;

Valor de Devolução

Um valor POSITION que pode ser usado para iteração; NULL se a lista estiver vazia.

CFileDialog::HideControl

Chame essa função de membro para ocultar o controle especificado em uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.

void HideControl(int nID);

Parâmetros

Nid
A ID do controle a ser ocultado.

Comentários

A caixa de diálogo precisa ter sido criada com o estilo OFN_EXPLORER; caso contrário, a função falhará com uma instrução assert.

CFileDialog::IsPickFoldersMode

Determina se o diálogo atual está no modo seletor de pastas.

BOOL IsPickFoldersMode() const;

Valor de Devolução

TRUE se o diálogo estiver no modo seletor de pastas; caso contrário, FALSE.

Comentários

CFileDialog::m_ofn

m_ofn é uma estrutura de tipo OPENFILENAME. Os dados nessa estrutura representam o estado atual do CFileDialog.

Comentários

Use essa estrutura para inicializar a aparência de uma caixa de diálogo Abrir Arquivo ou Salvar Arquivo Como depois de construí-la, mas antes de exibi-la com o método DoModal. Por exemplo, você pode definir o membro lpstrTitle de m_ofn como a legenda que deseja que a caixa de diálogo tenha.

Com o estilo do Windows Vista ou posterior do CFileDialog, não é garantido que m_ofn sempre corresponda ao estado da caixa de diálogo. Ele é sincronizado com a caixa de diálogo em versões anteriores do Windows. Confira CFileDialog::ApplyOFNToShellDialog e CFileDialog::UpdateOFNFromShellDialog para saber mais sobre como sincronizar a estrutura m_ofn e o estado CFileDialog no Windows Vista ou posterior.

Os diálogos de arquivo de estilo do Windows Vista ou posterior não dão suporte a determinados membros e sinalizadores do CFileDialog. Por conta disso, eles não terão efeito.

Veja abaixo uma lista dos membros que não têm suporte no Windows Vista ou posterior:

  • lpstrCustomFilter

  • lpstrInitialDir

  • lCustData

  • lpfnHook

  • lpTemplateName

Não há suporte aos sinalizadores abaixo e, portanto, eles não têm efeito quando você usa o estilo do Windows Vista ou posterior de CFileDialog:

  • OFN_ENABLEHOOK

  • OFN_ENABLEINCLUDENOTIFY

  • OFN_ENABLETEMPLATE

  • OFN_ENABLETEMPLATEHANDLE

  • OFN_EXPLORER

  • OFN_EXTENSIONDIFFERENT

  • OFN_HIDEREADONLY

  • OFN_LONGNAMES – sempre ativado no Windows Vista ou posterior

  • OFN_NOLONGNAMES – sempre desativado no Windows Vista ou posterior

  • OFN_NONETWORKBUTTON – sempre ativado no Windows Vista ou posterior

  • OFN_READONLY

  • OFN_SHOWHELP

Para saber mais sobre essa estrutura, confira a estrutura OPENFILENAME no SDK do Windows.

CFileDialog::MakeProminent

Coloca um controle no diálogo para que ele se destaque em comparação com outros controles.

HRESULT MakeProminent(DWORD dwIDCtl);

Parâmetros

dwIDCtl
O ID do controle.

Comentários

CFileDialog::OnButtonClicked

Chamado quando o botão é clicado.

virtual void OnButtonClicked(DWORD dwIDCtl);

Parâmetros

dwIDCtl
A ID do botão.

Comentários

CFileDialog::OnCheckButtonToggled

Chamado quando a caixa de seleção é marcada ou desmarcada.

virtual void OnCheckButtonToggled(
    DWORD dwIDCtl,
    BOOL bChecked);

Parâmetros

dwIDCtl
A ID da caixa de seleção.

bChecked
Marcado ou desmarcado.

Comentários

CFileDialog::OnControlActivating

Ocorre quando o controle é ativado.

virtual void OnControlActivating(DWORD dwIDCtl);

Parâmetros

dwIDCtl
O ID do controle.

Comentários

CFileDialog::OnFileNameChange

Substitua esse método se você quiser manipular a mensagem de WM_NOTIFY CDN_SELCHANGE.

virtual void OnFileNameChange();

Comentários

O sistema envia a mensagem CDN_SELCHANGE quando o usuário seleciona um novo arquivo ou pasta na lista de arquivos da caixa de diálogo Abrir ou Salvar como. Substitua esse método se você quer executar alguma ação em resposta a essa mensagem.

O sistema enviará essa mensagem somente se a caixa de diálogo tiver sido criada com o sinalizador OFN_EXPLORER ativado. Para saber mais sobre a notificação, confira CDN_SELCHANGE. Para saber mais sobre o sinalizador OFN_EXPLORER, confira a estrutura OPENFILENAME e Caixas de diálogo Abrir e Salvar como.

CFileDialog::OnFileNameOK

Substitua essa função somente se você quiser fornecer validação personalizada de nomes de arquivo que são inseridos em uma caixa de diálogo de arquivo comum.

virtual BOOL OnFileNameOK();

Valor de Devolução

1 se o nome do arquivo não for um nome de arquivo válido; caso contrário, 0.

Comentários

Essa função permite rejeitar um nome de arquivo por algum motivo específico do aplicativo. Normalmente, você não precisa usar essa função porque a estrutura fornece validação padrão de nomes de arquivo e exibe uma caixa de mensagem se um nome de arquivo inválido é inserido.

Se 1 for retornado, a caixa de diálogo permanecerá exibida para o usuário inserir outro nome de arquivo. O procedimento de diálogo ignorará o diálogo se o retorno for 0. Outros valores retornados diferentes de zero estão reservados no momento e não devem ser usados.

CFileDialog::OnFolderChange

Substitua essa função para lidar com a mensagem WM_NOTIFYCDN_FOLDERCHANGE.

virtual void OnFolderChange();

Comentários

A mensagem de notificação é enviada quando uma nova pasta é aberta na caixa de diálogo Abrir ou Salvar como.

A notificação será enviada somente se a caixa de diálogo tiver sido criada com o estilo OFN_EXPLORER. Para saber mais sobre a notificação, confira CDN_FOLDERCHANGE. Para saber mais sobre o estilo OFN_EXPLORER, confira a estrutura OPENFILENAME e Caixas de diálogo Abrir e Salvar como.

CFileDialog::OnInitDone

Substitua essa função para lidar com a mensagem WM_NOTIFY CDN_INITDONE.

virtual void OnInitDone();

Comentários

O sistema envia essa mensagem de notificação quando o sistema termina de organizar controles na caixa de diálogo Abrir ou Salvar como a fim de abrir espaço para os controles da caixa de diálogo filho.

O sistema enviará isso somente se a caixa de diálogo tiver sido criada com o estilo OFN_EXPLORER. Para saber mais sobre a notificação, confira CDN_INITDONE. Para saber mais sobre o estilo OFN_EXPLORER, confira a estrutura OPENFILENAME e Caixas de diálogo Abrir e Salvar como.

Observação

Os diálogos de arquivo de estilo do Windows Vista ou posterior não dão suporte a essa função. A tentativa de usar essa função em um diálogo de arquivo em estilo do Windows Vista ou posterior gerará CNotSupportedException.

CFileDialog::OnItemSelected

Chamado quando o item de contêiner é selecionado.

virtual void OnItemSelected(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item.

Comentários

CFileDialog::OnLBSelChangedNotify

Essa função é chamada sempre que a seleção atual em uma caixa de listagem está prestes a ser alterada.

virtual void OnLBSelChangedNotify(
    UINT nIDBox,
    UINT iCurSel,
    UINT nCode);

Parâmetros

nIDBox
A ID da caixa de listagem ou caixa de combinação na qual a seleção ocorreu.

iCurSel
O índice da seleção atual.

nCode
O código de notificação de controle. Esse parâmetro pode ter um dos seguintes valores:

  • CD_LBSELCHANGE Especifica que iCurSel é o item selecionado em uma caixa de listagem de opção única.

  • CD_LBSELSUB Especifica que iCurSel não está mais selecionado em uma caixa de listagem de várias opções.

  • CD_LBSELADD Especifica que iCurSel não está mais selecionado em uma caixa de listagem de várias opções.

  • CD_LBSELNOITEMS Especifica que nenhuma seleção existe em uma caixa de listagem de várias opções.

Comentários

Substitua essa função para fornecer tratamento personalizado de alterações de opção na caixa de listagem. Por exemplo, você pode usar essa função para exibir os direitos de acesso ou a última modificação de cada arquivo selecionado pelo usuário.

CFileDialog::OnShareViolation

Substitua essa função para fornecer tratamento personalizado de violações de compartilhamento.

virtual UINT OnShareViolation(LPCTSTR lpszPathName);

Parâmetros

lpszPathName
O caminho do arquivo no qual ocorreu a violação do compartilhamento.

Valor de Devolução

Um dos seguintes valores:

  • OFN_SHAREFALLTHROUGH O nome do arquivo é retornado da caixa de diálogo.

  • OFN_SHARENOWARN Nenhuma ação adicional precisa ser realizada.

  • OFN_SHAREWARN O usuário recebe a mensagem de aviso padrão para esse erro.

Comentários

Normalmente, você não precisa usar essa função porque a estrutura fornece verificação padrão de violações de compartilhamento e exibe uma caixa de mensagem em caso de violação de compartilhamento.

Se você quiser desabilitar a verificação de violação de compartilhamento, use o operador OR bit a bit para combinar o sinalizador OFN_SHAREAWARE com m_ofn.Flags.

CFileDialog::OnTypeChange

Substitua essa função para lidar com a mensagem WM_NOTIFYCDN_TYPECHANGE.

virtual void OnTypeChange();

Comentários

A mensagem de notificação é enviada quando o usuário seleciona um novo tipo de arquivo na lista de tipos de arquivo na caixa de diálogo Abrir ou Salvar como.

A notificação será enviada somente se a caixa de diálogo tiver sido criada com o estilo OFN_EXPLORER. Para saber mais sobre a notificação, confira CDN_TYPECHANGE. Para saber mais sobre o estilo OFN_EXPLORER, confira a estrutura OPENFILENAME e Caixas de diálogo Abrir e Salvar como.

CFileDialog::RemoveControlItem

Remove um item de um controle de contêiner no diálogo.

HRESULT RemoveControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parâmetros

dwIDCtl
A ID do controle de contêiner do qual remover o item.

dwIDItem
A ID do item.

Comentários

CFileDialog::SetCheckButtonState

Define o estado atual de um botão de seleção (caixa de seleção) no diálogo.

HRESULT SetCheckButtonState(
    DWORD dwIDCtl,
    BOOL bChecked);

Parâmetros

dwIDCtl
A ID da caixa de seleção.

bChecked
O estado da caixa de seleção. TRUE indica marcado; FALSE indica desmarcado.

Comentários

CFileDialog::SetControlItemState

Define o estado atual de um item em um controle de contêiner encontrado no diálogo.

HRESULT SetControlItemState(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item.

dwState
Um ou mais valores da enumeração CDCONTROLSTATE que indicam o novo estado do controle.

Comentários

CFileDialog::SetControlItemText

Define o texto de um item de controle. Por exemplo, o texto que acompanha um botão de opção ou um item em um menu.

HRESULT SetControlItemText(
    DWORD dwIDCtl,
    DWORD dwIDItem,
    const CString& strLabel);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item.

strLabel
Texto do item.

Comentários

CFileDialog::SetControlLabel

Define o texto associado a um controle, como texto de botão ou rótulo de caixa de edição.

HRESULT SetControlLabel(
    DWORD dwIDCtl,
    const CString& strLabel);

Parâmetros

dwIDCtl
O ID do controle.

strLabel
O nome do controle.

Comentários

CFileDialog::SetControlState

Define a visibilidade atual e os estados habilitados de determinado controle.

HRESULT SetControlState(
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);

Parâmetros

dwIDCtl
O ID do controle.

dwState
Um ou mais valores da enumeração CDCONTROLSTATE que indicam o estado atual do controle.

Comentários

CFileDialog::SetControlText

Chame esse método a fim de definir o texto para o controle especificado em uma caixa de diálogo Abrir ou Salvar como no estilo do Explorador.

void SetControlText(
    int nID,
    LPCSTR lpsz);

void SetControlText(
    int nID,
    const wchar_t *lpsz);

Parâmetros

Nid
[in] A ID do controle para o qual definir o texto.

lpsz
[in] Um ponteiro para a cadeia de caracteres que contém o texto a ser definido para o controle.

Comentários

Ambas as versões dessa função são válidas para aplicativos que usam Unicode. No entanto, somente a versão com o tipo LPCSTR é válida para aplicativos que usam ANSI.

Para usar esse método, você precisa criar a caixa de diálogo com o estilo OFN_EXPLORER. Caso contrário, a função falhará com uma instrução assert.

CFileDialog::SetDefExt

Chame essa função para definir a extensão de nome de arquivo padrão para uma caixa de diálogo Abrir ou Salvar como comum no estilo do Explorador.

void SetDefExt(LPCSTR lpsz);

Parâmetros

lpsz
Um ponteiro para uma cadeia de caracteres que contém a extensão padrão a ser usada para o objeto da caixa de diálogo. Essa cadeia de caracteres não deve conter um ponto (.).

Comentários

A caixa de diálogo precisa ter sido criada com o estilo OFN_EXPLORER; caso contrário, a função falhará com uma instrução assert.

CFileDialog::SetEditBoxText

Define o texto atual em um controle de caixa de edição.

HRESULT SetEditBoxText(
    DWORD dwIDCtl,
    const CString& strText);

Parâmetros

dwIDCtl
A ID da caixa de edição.

strText
O valor do texto.

Comentários

CFileDialog::SetProperties

Fornece um repositório de propriedades que define os valores padrão a serem usados para o item que está sendo salvo.

BOOL SetProperties(LPCWSTR lpszPropList);

Parâmetros

lpszPropList
Uma lista de propriedades predefinidas separadas por ";". Para obter uma lista dos sinalizadores, confira a seção Sinalizadores de OPENFILENAME.

Comentários

CFileDialog::SetSelectedControlItem

Define o estado selecionado de um item específico em um grupo de botões de opção ou em uma caixa de combinação encontrada no diálogo.

HRESULT SetSelectedControlItem(
    DWORD dwIDCtl,
    DWORD dwIDItem);

Parâmetros

dwIDCtl
A ID do controle de contêiner.

dwIDItem
A ID do item que o usuário selecionou no controle.

Comentários

CFileDialog::SetTemplate

Define o modelo da caixa de diálogo para o objeto CFileDialog.

void SetTemplate(
    UINT nWin3ID,
    UINT nWin4ID);

void SetTemplate(
    LPCTSTR lpWin3ID,
    LPCTSTR lpWin4ID);

Parâmetros

nWin3ID
[in] Contém o número de ID do recurso de modelo para o objeto CFileDialog não Explorador. Esse modelo só é usado no Windows NT 3.51 ou quando o estilo OFN_EXPLORER não está presente.

nWin4ID
[in] Contém o número de ID do recurso de modelo para o objeto CFileDialog do Explorador. Esse modelo é usado apenas em versões do Windows NT 4.0 e versões posteriores, do Windows 95 e versões posteriores ou quando o estilo OFN_EXPLORER está presente.

lpWin3ID
[in] Contém o nome do recurso de modelo para o objeto CFileDialog não Explorador. Esse modelo só é usado no Windows NT 3.51 ou quando o estilo OFN_EXPLORER não está presente.

lpWin4ID
[in] Contém o nome do recurso de modelo do objeto CFileDialog do Explorador. Esse modelo é usado apenas em versões do Windows NT 4.0 e versões posteriores, do Windows 95 e versões posteriores ou quando o estilo OFN_EXPLORER está presente.

Comentários

O sistema usará apenas um dos modelos especificados. O sistema determina qual modelo usar com base na presença do estilo OFN_EXPLORER e no sistema operacional no qual o aplicativo está em execução. Ao especificar tanto um modelo de estilo do Explorador quanto não Explorador, é fácil dar suporte a Windows NT 3.51, Windows NT 4.0 e versões posteriores, e ao Windows 95 e versões posteriores.

Observação

As caixas de diálogo de arquivo de estilo do Windows Vista ou posterior não dão suporte a essa função. A tentativa de usar essa função em uma caixa de diálogo em estilo do Windows Vista ou posterior gerará CNotSupportedException. Uma alternativa é usar um diálogo personalizado. Para saber mais sobre como usar um personalizado CFileDialog, confira IFileDialogCustomize.

CFileDialog::StartVisualGroup

Declara um grupo visual no diálogo. Chamadas subsequentes a qualquer método "add" adicionam esses elementos a esse grupo.

HRESULT StartVisualGroup(
    DWORD dwIDCtl,
    const CString& strLabel);

Parâmetros

dwIDCtl
A ID do grupo visual.

strLabel
O nome do grupo.

Comentários

CFileDialog::UpdateOFNFromShellDialog

Atualiza a estrutura de dados m_ofn do CFileDialog com base no estado atual do objeto interno.

void UpdateOFNFromShellDialog();

Comentários

Nas versões do Windows antes do Windows Vista, a estrutura de dados OPENFILENAME do membro era sincronizada continuamente com o estado do CFileDialog. Todas as alterações na variável de membro m_ofn afetaram diretamente o estado da caixa de diálogo. Além disso, todas as alterações no estado do diálogo atualizaram imediatamente a variável de membro m_ofn.

No Windows Vista ou posterior, a estrutura de dados m_ofn não é atualizada automaticamente. Para garantir a precisão dos dados na variável de membro m_ofn, você deve chamar a função UpdateOFNFromShellDialog antes de acessar os dados. O Windows chama essa função automaticamente durante o processamento de IFileDialog::OnFileOK.

Para saber mais sobre como usar a classe CFileDialog no Windows Vista ou posterior, confira Classe CFileDialog.

Exemplo

Este exemplo atualiza o CFileDialog antes de exibi-lo. Antes de atualizar a variável de membro m_ofn, precisamos sincronizá-la com o estado atual da caixa de diálogo.

// Update the m_ofn variable
m_myFileDialogPtr->UpdateOFNFromShellDialog();

// Change the title
m_myFileDialogPtr->m_ofn.lpstrTitle = L"New Dialog Title";

// Apply the changes
m_myFileDialogPtr->ApplyOFNToShellDialog();

// Show the window
LRESULT result = m_myFileDialogPtr->DoModal();

Confira também

Classe CCommonDialog
Gráfico da hierarquia