Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.
Encapsula a caixa de diálogo comum usada para operações de abertura ou gravação de ficheiros.
Sintaxe
class CFileDialog : public CCommonDialog
Membros
Construtores Públicos
| Nome | Description |
|---|---|
| CFileDialog::CFileDialog | Constrói um CFileDialog objeto. |
Métodos Públicos
| Nome | Description |
|---|---|
| CFileDialog::AddCheckButton | Adiciona um botão de verificação ao diálogo. |
| CFileDialog::AddComboBox | Adiciona uma caixa de combo ao diálogo. |
| CFileDialog::AddControlItem | Adiciona um item a um controlo de contentor 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 utilizador abrir ou guardar itens. |
| CFileDialog::AdicionarBotão | Adiciona um botão ao diálogo. |
| CFileDialog::AddRadioButtonList | Adiciona um grupo de botão de opção (também conhecido como botão de rádio) 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 do CFileDialog para corresponder aos parâmetros e flags armazenados na m_ofn variável membro. |
| CFileDialog::D oModal | Mostra a caixa de diálogo e permite ao utilizador fazer uma seleção. |
| CFileDialog::EnableOpenDropDown | Ativa uma lista suspensa no botão Abrir ou Guardar no diálogo. |
| CFileDialog::EndVisualGroup | Impede a adição de elementos a um grupo visual no diálogo. |
| CFileDialog::GetCheckButtonState | Aparece o estado atual de um botão de marcar (caixa de seleção) no diálogo. |
| CFileDialog::GetControlItemState | Obtém o estado atual de um item num controlo de contentor encontrado no diálogo. |
| CFileDialog::GetControlState | Obtém a visibilidade atual e os estados ativados de um determinado controlo. |
| CFileDialog::GetEditBoxText | Obtém o texto atual num controlo de caixa de edição. |
| CFileDialog::GetFileExt | Devolve a extensão do ficheiro selecionado. |
| CFileDialog::GetFileName | Devolve o nome do ficheiro selecionado. |
| CFileDialog::GetFileTitle. | Devolve o título do ficheiro selecionado. |
| CFileDialog::GetFolderPath | Recupera o caminho da pasta ou diretório atualmente aberto para uma caixa de diálogo comum ao estilo Explorer, Abrir ou Guardar Como . |
| CFileDialog::GetIFileDialogPersonalizar | Recupera o objeto COM interno para um objeto personalizado CFileDialog . |
| CFileDialog::GetIFileOpenDialog | Recupera o objeto COM interno para um CFileDialog que é usado como caixa de diálogo Abrir ficheiro. |
| CFileDialog::GetIFileSaveDialog | Recupera o objeto COM interno para um CFileDialog que é usado como caixa de diálogo de ficheiro de Guardar . |
| CFileDialog::GetNextPathName | Devolve o caminho completo do ficheiro selecionado seguinte. |
| CFileDialog::GetOFN | Recupera a OPENFILENAME estrutura do CFileDialog objeto. |
| CFileDialog::GetPathName | Devolve o caminho completo do ficheiro selecionado. |
| CFileDialog::GetReadOnlyPref | Devolve o estado de apenas leitura do ficheiro selecionado. |
| CFileDialog::GetResult | Obtém a escolha que o utilizador fez no diálogo. |
| CFileDialog::GetResults | Obtém as escolhas do utilizador num diálogo que permite múltiplas seleções. |
| CFileDialog::GetSelectedControlControlItem | Obtém um item específico através dos controlos específicos do contentor no diálogo. |
| CFileDialog::GetStartPosition | Devolve a posição do primeiro elemento da lista de nomes do ficheiro. |
| CFileDialog::HideControl | Esconde o controlo especificado numa caixa de diálogo comum ao estilo Explorer, Abrir ou Guardar Como . |
| CFileDialog::IsPickFoldersMode | Determina se o diálogo atual está em modo seletor de pastas. |
| CFileDialogue::MakeProminent | Coloca um controlo no diálogo para que se destaque em comparação com outros controlos adicionados. |
| CFileDialog::RemoveControlItem | Remove um item de um controlo de contentor no diálogo. |
| CFileDialog::SetCheckButtonState | Define o estado atual de um botão de verificação (caixa de verificação) no diálogo. |
| CFileDialog::SetControlItemState | Define o estado atual de um item num controlo de contentor encontrado no diálogo. |
| CFileDialog::SetControlItemText | Define o texto de um item de controlo. Por exemplo, o texto que acompanha um botão de acesso ou um item num menu. |
| CFileDialog::SetControlLabel | Define o texto associado a um controlo, como texto de botão ou um rótulo de caixa de edição. |
| CFileDialog::SetControlState | Define a visibilidade atual e os estados habilitados de um determinado controlo. |
| CFileDialog::SetControlText | Define o texto do controlo especificado numa caixa de diálogo comum ao estilo Explorer, Abrir ou Guardar Como . |
| CFileDialog::SetDefExt | Define a extensão padrão do nome do ficheiro para uma caixa de diálogo comum ao estilo Explorer, Abrir ou Guardar Como . |
| CFileDialog::SetEditBoxText | Define o texto atual num controlo de caixa de edição. |
| CFileDialog::SetProperties | Fornece um armazenamento de propriedades que define os valores padrão a serem usados para o item a ser guardado. |
| CFileDialog::SetSelectedControlControlItem | Define o estado selecionado de um determinado item num grupo de botões de opção ou numa caixa de combo encontrada no diálogo. |
| CFileDialog::SetTemplate | Define o modelo da caixa de diálogo para o CFileDialog objeto. |
| CFileDialog::StartVisualGroup | Declara um grupo visual no diálogo. Chamadas subsequentes a qualquer método "add" adicionam esses elementos a este grupo. |
| CFileDialog::UpdateOFNFromShellDialog | Atualiza os dados armazenados na m_ofn variável membro para corresponder ao estado atual da caixa de diálogo do ficheiro. |
Métodos Protegidos
| Nome | Description |
|---|---|
| CFileDialog::OnButtonClicked | Liga quando o botão é carregado. |
| CFileDialog::OnCheckButtonToggle | Ligo quando a caixa está marcada ou desmarcada. |
| CFileDialog::OnControlAtivar | Chama quando o controlo está ativo. |
| CFileDialog::OnFileNameChange | Trata da mensagem WM_NOTIFY CDN_SELCHANGE. |
| CFileDialog::OnFileNameOK | Valida o nome do ficheiro inserido na caixa de diálogo. |
| CFileDialog::OnFolderChange | Trata da mensagem WM_NOTIFY CDN_FOLDERCHANGE. |
| CFileDialog::OnInitDone | Trata da mensagem WM_NOTIFY CDN_INITDONE. |
| CFileDialog::OnItemSelecionado | É chamado quando o item do contentor está a ser selecionado. |
| CFileDialog::OnLBSelChangedNotify | Permite realizar ações personalizadas quando a seleção de ficheiros muda. |
| CFileDialog::OnShareViolation | Identifica violações de partilha. |
| CFileDialog::OnTypeChange | Trata da WM_NOTIFY CDN_TYPECHANGE mensagem. |
Membros de Dados Públicos
| Nome | Description |
|---|---|
| CFileDialog::m_ofn | A estrutura Windows OPENFILENAME . Dá acesso a parâmetros básicos da caixa de diálogo do ficheiro. |
Observações
As caixas de diálogo de ficheiros comuns permitem implementar caixas de diálogo de seleção de ficheiros, por exemplo, Abrir Ficheiro e Guardar Como, de uma forma consistente com os padrões do Windows.
Podes usar CFileDialog como está com o construtor fornecido, ou podes derivar a tua própria classe de caixa de diálogo e CFileDialog escrever um construtor para satisfazer as tuas necessidades. Em qualquer dos casos, estas caixas de diálogo comportam-se como as caixas de diálogo padrão do MFC porque derivam da Classe CCommonDialog.
CFileDialog depende do ficheiro COMMDLG.DLL incluído no Windows.
Tanto a aparência como a funcionalidade CFileDialog do Windows Vista ou posteriores diferem das versões anteriores do Windows. O padrão CFileDialog utiliza automaticamente o novo estilo Windows Vista ou posterior, sem alterações de código, se um programa for compilado e executado no Windows Vista ou posterior. Use o parâmetro bVistaStyle no construtor para sobrescrever manualmente esta atualização automática. A exceção à atualização automática são as caixas de diálogo personalizadas. Não serão convertidas para o novo estilo. Para mais informações sobre o construtor, veja CFileDialog::CFileDialog.
Observação
O sistema de ID de controlo difere no Windows Vista ou versões posteriores das versões anteriores do Windows quando se utiliza um CFileDialog. Deve atualizar todas as referências aos CFileDialog controlos no código antes de poder portar o seu projeto de uma versão anterior do Windows.
Alguns CFileDialog métodos não são suportados no Windows Vista ou versões posteriores. Verifique o tema individual do método para saber se o método é suportado. Além disso, as seguintes funções herdadas não são suportadas no Windows Vista ou versões posteriores:
As mensagens do Windows para a CFileDialog classe variam consoante o sistema operativo que estás a usar. Por exemplo, o Windows XP não suporta CDialog::OnCancel e CDialog::OnOK para a CFileDialog classe. No entanto, o Windows Vista e sistemas operativos posteriores suportam-nos. Para mais informações sobre as diferentes mensagens geradas e a ordem em que são recebidas, consulte CFileDialog Exemplo: Ordem de Registo de Eventos.
Para usar um CFileDialog objeto, primeiro cria-o usando o CFileDialog construtor. Depois de a caixa de diálogo ser construída, pode definir ou modificar quaisquer valores na estrutura CFileDialog::m_ofn para inicializar os valores ou estados dos controlos da caixa de diálogo. A m_ofn estrutura é do tipo OPENFILENAME. Para mais informações, consulte a estrutura OPENFILENAME no SDK do Windows.
Depois de inicializar os controlos da caixa de diálogo, chame o método CFileDialog::D oModal para mostrar a caixa de diálogo para que o utilizador possa escrever o caminho e o nome do ficheiro.
DoModal retornos quer o utilizador tenha clicado no botão OK (IDOK) ou no botão Cancelar (IDCANCEL). Se DoModal devolver IDOK, pode usar uma das CFileDialog funções públicas dos membros para recuperar a informação inserida pelo utilizador.
Observação
No Windows Vista ou versões posteriores, múltiplas chamadas para IFileDialog::SetFileTypes causam um erro. A segunda chamada para SetFileTypes qualquer instância de um CFileDialog devolverá E_UNEXPECTED no Windows Vista ou posterior. Algumas CFileDialog funções de método chamam SetFileTypes. Por exemplo, duas chamadas para CFileDialog::DoModal para a mesma instância de um CFileDialog geram ASSERT.
CFileDialog Inclui vários membros protegidos que permitem fazer tratamento personalizado de violações de partilhas, validação de nomes de ficheiro e notificação de alterações na caixa de lista. Estes membros protegidos são funções de callback que a maioria das aplicações não tem de usar porque o tratamento por defeito é feito automaticamente. Entradas de mapa de mensagens para estas funções não são necessárias porque são funções virtuais padrão.
Pode usar a função CommDlgExtendedError do Windows para determinar se ocorreu um erro durante a inicialização da caixa de diálogo e para aprender mais sobre o erro.
A destruição de CFileDialog objetos é tratada automaticamente. Não precisa de chamar CDialog::EndDialog.
Para permitir que o utilizador selecione múltiplos ficheiros, defina a flag OFN_ALLOWMULTISELECT antes de chamar DoModal. Deve fornecer o seu próprio buffer de nomes de ficheiro para acomodar a lista devolvida de múltiplos nomes de ficheiros. Faça isto substituindo m_ofn.lpstrFile por um apontador para um buffer que alocou, depois de construir o CFileDialog, mas antes de chamar DoModal.
Além disso, deve definir m_ofn.nMaxFile usando o número de caracteres no buffer apontado por m_ofn.lpstrFile. Se definir o número máximo de ficheiros a selecionar para n, o tamanho do buffer requerido é n * (_MAX_PATH + 1) + 1. O primeiro item devolvido no buffer é o caminho para a pasta onde os ficheiros foram selecionados. Para caixas de diálogo do Windows Vista ou versões posteriores, as cadeias de diretórios e nomes de ficheiros são terminadas por null, com um carácter nulo extra após o último nome do ficheiro. Este formato permite que as caixas de diálogo ao estilo Explorador devolvam nomes de ficheiros longos que incluem espaços. Para caixas de diálogo antigas, as cadeias de diretórios e nomes de ficheiros são separadas por espaços e a função utiliza nomes curtos de ficheiros para nomes de ficheiros com espaços.
O exemplo seguinte demonstra como usar um buffer para recuperar e listar múltiplos nomes de ficheiros.
#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 utilizador selecionar vários nomes de ficheiros, deve derivar uma nova classe e CFileDialog sobrescrever o método CFileDialog::OnFileNameChange .
Se derivar uma nova classe a partir de CFileDialog, pode usar um mapa de mensagens para tratar quaisquer mensagens. Para estender o tratamento padrão das mensagens, derive uma classe a partir de CFileDialog, adicione um mapa de mensagens à nova classe e forneça funções membros para as novas mensagens. Não é necessário fornecer uma função de gancho para personalizar a caixa de diálogo.
Para personalizar a caixa de diálogo, derive uma classe a partir de CFileDialog, forneça um modelo personalizado de caixa de diálogo e adicione um mapa de mensagens para processar as mensagens de notificação a partir dos controlos estendidos. Passa quaisquer mensagens não processadas para a classe base. Não precisas de personalizar a função de gancho.
Quando está a usar o estilo CFileDialogWindows Vista ou posterior, não pode usar mapas de mensagens e modelos de caixas de diálogo. Em vez disso, deve usar as interfaces COM para funcionalidades semelhantes.
Para mais informações sobre como usar CFileDialog, veja Classes Comuns de Diálogo.
Hierarquia de herança
CFileDialog
Requerimentos
Cabeçalho: afxdlgs.h
CFileDialog::AddCheckButton
Adiciona um botão de verificação ao diálogo.
HRESULT AddCheckButton(
DWORD dwIDCtl,
const CString& strLabel,
BOOL bChecked);
Parâmetros
dwIDCtl
O ID do botão de verificação para adicionar.
strLabel
O nome do botão de verificar.
bVerificado
Um Booleano indica o estado atual do botão de verificação. VERDADEIRO se assinalado; FALSE caso contrário
Observações
CFileDialog::AddComboBox
Adiciona uma caixa de combo ao diálogo.
HRESULT AddComboBox(DWORD dwIDCtl);
Parâmetros
dwIDCtl
O ID da caixa combinada para adicionar.
Observações
CFileDialog::AddControlItem
Adiciona um item a um controlo de contentor no diálogo.
HRESULT AddControlItem(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parâmetros
dwIDCtl
O ID do controlo do contentor para adicionar o item.
dwIDItem
A ID do item.
strLabel
Texto do item.
Observações
CFileDialog::AddEditBox
Adiciona uma caixa de edição ao diálogo.
HRESULT AddEditBox(
DWORD dwIDCtl,
const CString& strText);
Parâmetros
dwIDCtl
O ID da caixa de edição para adicionar.
strText
O nome da caixa de edição.
Observações
CFileDialog::AddMenu
Adiciona um menu ao diálogo.
HRESULT AddMenu(
DWORD dwIDCtl,
const CString& strLabel);
Parâmetros
dwIDCtl
O ID do menu para adicionar.
strLabel
O nome do menu.
Observações
CFileDialog::AddPlace
Adiciona uma pasta à lista de locais disponíveis para o utilizador abrir ou guardar 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 disponibilizado ao utilizador. Isto só pode ser uma pasta.
FDAP
Especifica onde a pasta está colocada dentro da lista.
PSI
Um apontador para um IShellItem que representa a pasta a disponibilizar ao utilizador. Isto só pode ser uma pasta.
Observações
CFileDialog::AdicionarBotão
Adiciona um botão ao diálogo.
HRESULT AddPushButton(
DWORD dwIDCtl,
const CString& strLabel);
Parâmetros
dwIDCtl
O ID do botão para adicionar.
strLabel
O nome do botão.
Observações
CFileDialog::AddRadioButtonList
Adiciona um grupo de botão de opção (também conhecido como botão de rádio) ao diálogo.
HRESULT AddRadioButtonList(DWORD dwIDCtl);
Parâmetros
dwIDCtl
O ID do grupo de botões de opção para adicionar.
Observações
CFileDialog::AddSeparator
Adiciona um separador ao diálogo.
HRESULT AddSeparator(DWORD dwIDCtl);
Parâmetros
dwIDCtl
O ID da adição do separador.
Observações
CFileDialog::AddText
Adiciona texto ao diálogo.
HRESULT AddText(
DWORD dwIDCtl,
const CString& strText);
Parâmetros
dwIDCtl
O ID da mensagem para adicionar.
strText
O nome da mensagem.
Observações
CFileDialog::ApplyOFNToShellDialog
Atualiza o estado atual do CFileDialog com base nos valores armazenados na m_ofn estrutura de dados.
void ApplyOFNToShellDialog();
Observações
Nas versões do Windows anteriores ao Windows Vista, a estrutura de dados membro OPENFILENAME era continuamente sincronizada com o estado do CFileDialog. Quaisquer alterações à variável m_ofn membro eram imediatamente refletidas no estado da caixa de diálogo. Além disso, qualquer alteração no estado da caixa de diálogo atualiza imediatamente a m_ofn variável membro.
No Windows Vista ou versões posteriores, os valores na m_ofn variável membro e o estado do CFileDialog não são garantidos que estejam sincronizados. Esta função obriga o estado CFileDialog do a ser atualizado para corresponder à m_ofn estrutura. O Windows chama esta função automaticamente durante o CFileDialog::D oModal.
Para mais informações sobre como usar a CFileDialog classe no Windows Vista ou versões posteriores, consulte Classe CFileDialog.
Example
Veja o exemplo para CFileDialog::UpdateOFNFromShellDialog.
CFileDialog::CFileDialog
Chame esta função para construir uma caixa de diálogo padrão de ficheiros 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
[dentro] O parâmetro que especifica que tipo de caixa de diálogo criar. Define para TRUE para construir uma caixa de diálogo Abrir Ficheiro . Defina para FALSE para construir uma caixa de diálogo Ficheiro Guardar Como .
lpszDefExt
[dentro] A extensão padrão do nome do ficheiro. Se o utilizador não incluir uma extensão conhecida (uma que tenha uma associação no computador do utilizador) na caixa Nome do Ficheiro, a extensão especificada por lpszDefExt é automaticamente adicionada ao nome do ficheiro. Se este parâmetro for NULL, não é acrescentada qualquer extensão.
lpszFileName
[dentro] O nome inicial do ficheiro que aparece na caixa Nome do Ficheiro. Se for NULL, não aparece o nome inicial do ficheiro.
dwBandeiras
[dentro] Uma combinação de uma ou mais bandeiras que podes usar para personalizar a caixa de diálogo. Para uma descrição destas bandeiras, consulte a estrutura OPENFILENAME no SDK do Windows. Se modificar o m_ofn.Flags elemento da estrutura, use um operador bitwise-OR nas suas alterações para manter o comportamento padrão intacto.
lpszFilter
[dentro] Uma série de pares de cadeias que especificam filtros que podes aplicar ao ficheiro. Se especificar filtros de ficheiros, apenas ficheiros que cumpram os critérios de filtro aparecerão na lista de Ficheiros. Consulte a secção Observações para mais informações sobre como trabalhar com filtros de ficheiros.
pParentWnd
[dentro] Um apontador para a janela pai ou proprietária da caixa de diálogo do ficheiro.
dwSize
[dentro] O tamanho da OPENFILENAME estrutura. Este valor depende da versão do sistema operativo. O MFC usou este parâmetro para determinar o tipo de caixa de diálogo apropriado a criar. O tamanho padrão 0 significa que o código MFC determinará o tamanho correto da caixa de diálogo a usar com base na versão do sistema operativo em que o programa é executado.
bVistaStyle
[dentro] Nota Este parâmetro está disponível no Visual Studio 2008 e versões posteriores e faz com que o novo estilo de diálogo seja usado apenas se estiver a correr no Windows Vista ou versões posteriores.
O parâmetro que especifica o estilo do diálogo do ficheiro. Define para TRUE para usar os novos diálogos de ficheiros ao estilo do Vista. Caso contrário, será usado o estilo antigo de caixas de diálogo. Consulte a secção de Observações para mais informações sobre correr sob Vista.
Observações
É construída uma caixa de diálogo de Abrir Ficheiro ou Guardar Como , dependendo do valor do bOpenFileDialog.
Especificar uma extensão por defeito usando lpszDefExt pode não produzir o comportamento que espera, porque raramente é previsível que extensões têm associações de ficheiros no computador do utilizador. Se precisares de mais controlo sobre a adição de uma extensão padrão, podes derivar a tua própria classe a partir de CFileDialog, e sobrescrever o CFileDialog::OnFileNameOK método para realizar o teu próprio tratamento de extensões.
Para permitir que o utilizador selecione múltiplos ficheiros, defina a OFN_ALLOWMULTISELECT flag antes de chamar o DoModal. Deve fornecer o seu próprio buffer de nomes de ficheiro para armazenar a lista devolvida de vários nomes de ficheiros. Faça isto substituindo m_ofn.lpstrFile por um ponteiro para um buffer que alocou, depois de construir o CFileDialog, mas antes de chamar DoModal. Além disso, deve definir m_ofn.nMaxFile com o número de caracteres no buffer apontado por m_ofn.lpstrFile. Se definir o número máximo de ficheiros a selecionar para n, o tamanho do buffer necessário é 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 utilizador redimensione uma caixa de diálogo ao estilo Explorador usando o rato ou teclado, defina a OFN_ENABLESIZING flag. Definir este flag só é necessário se fornecer um procedimento de hook ou modelo personalizado. A bandeira funciona apenas com uma caixa de diálogo ao estilo Explorer; Caixas de diálogo de estilo antigo não podem ser redimensionadas.
O parâmetro lpszFilter é usado para determinar o tipo de nome de ficheiro que um ficheiro deve ter para ser exibido na lista de ficheiros. A primeira cadeia do par de cordas descreve o filtro; a segunda cadeia indica a extensão do nome do ficheiro a usar. Múltiplas extensões podem ser especificadas usando um ponto e vírgula (o carácter ';') como delimitador. A cadeia termina com dois caracteres de barra verticais (||), seguidos de um carácter NULL. Também podes usar um objeto CString para este parâmetro.
Por exemplo, o Microsoft Excel permite que os utilizadores abram ficheiros com extensões .xlc (gráfico) ou .xls (folha de cálculo), entre outras. O filtro para Excel podia ser escrito 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 planeia usar esta cadeia para atualizar diretamente a OPENFILENAME estrutura, deve delimitar as suas cadeias com o carácter nulo, '\0', em vez das barras verticais ('|').
O parâmetro bVistaStyle é aplicável apenas quando executado no Windows Vista ou posterior. Nas versões anteriores do Windows, este parâmetro é ignorado. Se o bVistaStyle estiver definido como TRUE, ao compilar um programa com Visual Studio 2008 ou posterior, será utilizado o novo Diálogo de Ficheiros do estilo Vista. Caso contrário, será utilizado o anterior estilo MFC File Dialog .
Os modelos de diálogo não são suportados em diálogos baseados no bVistaStyle
Example
Veja o exemplo para CFileDialog::D oModal.
CFileDialog::D oModal
Chame esta função para mostrar a caixa de diálogo de ficheiros comuns do Windows e permitir que o utilizador navegue por ficheiros e diretórios e insira um nome de ficheiro.
virtual INT_PTR DoModal();
Valor de retorno
IDOK ou IDCANCEL. Se o IDCANCEL for retornado, chame a função Windows CommDlgExtendedError para determinar se ocorreu um erro.
IDOK e IDCANCEL são constantes que indicam se o utilizador selecionou o botão OK ou Cancelar.
Observações
Se quiser inicializar as várias opções de caixa de diálogo do ficheiro definindo membros da m_ofn estrutura, deve fazer isto antes de chamar DoModal, mas depois de o objeto de diálogo estar construído.
Por exemplo, se quiser permitir que o utilizador selecione múltiplos ficheiros, defina a flag OFN_ALLOWMULTISELECT antes de chamar DoModal, como mostrado no exemplo de código deste tópico.
Quando o utilizador clica nos botões OK ou Cancelar da caixa de diálogo, ou seleciona a opção Fechar no menu de controlo da caixa de diálogo, o controlo é devolvido à sua aplicação. Pode então chamar outras funções membros para recuperar as definições ou informações que o utilizador insere na caixa de diálogo.
DoModal é uma função virtual sobreposta da classe CDialog.
Example
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
Ativa uma lista suspensa no botão Abrir ou Guardar no diálogo.
HRESULT EnableOpenDropDown(DWORD dwIDCtl);
Parâmetros
dwIDCtl
O ID da lista suspensa.
Observações
CFileDialog::EndVisualGroup
Impede a adição de elementos a um grupo visual no diálogo.
HRESULT EndVisualGroup();
Valor de retorno
Retorna S_OK se for bem-sucedido; um valor de erro caso contrário.
Observações
CFileDialog::GetCheckButtonState
Recupera o estado atual de um botão de verificação (caixa de seleção) no diálogo.
HRESULT GetCheckButtonState(
DWORD dwIDCtl,
BOOL& bChecked);
Parâmetros
dwIDCtl
O ID da caixa de verificação.
bVerificado
O estado da caixa de seleção. TRUE indica verificado; FALSE indica não verificado.
Observações
CFileDialog::GetControlItemState
Recupera o estado atual de um item num controlo de contentor encontrado no diálogo.
HRESULT GetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF& dwState);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
A ID do item.
dwState
Uma referência a uma variável que recebe um ou mais valores da enumeração CDCONTROLSTATE que indica o estado atual do controlo.
Observações
CFileDialog::GetControlState
Recupera a visibilidade atual e os estados ativados de um determinado controlo.
HRESULT GetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF& dwState);
Parâmetros
dwIDCtl
A 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 controlo.
Observações
CFileDialog::GetEditBoxText
Recupera o texto atual num controlo de caixa de edição.
HRESULT GetEditBoxText(
DWORD dwIDCtl,
CString& strText);
Parâmetros
dwIDCtl
O ID da caixa de edição.
strText
O valor do texto.
Observações
CFileDialog::GetFileExt
Chame esta função para recuperar a extensão do nome do ficheiro inserida na caixa de diálogo.
CString GetFileExt() const;
Valor de retorno
A extensão do nome do ficheiro.
Observações
Por exemplo, se o nome do ficheiro inserido for DATA.TXT, GetFileExt retorna "TXT".
Se m_ofn.Flags tiver a flag de OFN_ALLOWMULTISELECT ativada, esta cadeia contém uma sequência de cadeias terminadas em nulo, sendo a primeira cadeia o caminho do diretório do grupo de ficheiros selecionado, seguido pelos nomes de todos os ficheiros selecionados pelo utilizador. Para recuperar os nomes dos caminhos dos ficheiros, utilize as funções membros GetStartPosition e GetNextPathName .
CFileDialog::GetFileName
Chame esta função para recuperar o nome do nome do ficheiro introduzido na caixa de diálogo.
CString GetFileName() const;
Valor de retorno
O nome do arquivo.
Observações
O nome do ficheiro inclui tanto o prefixo como a extensão. Por exemplo, GetFileName devolverá "TEXTO. DAT" para o ficheiro C:\FILES\TEXT.DAT.
Se m_ofn.Flags tiver o OFN_ALLOWMULTISELECT flag definido, deve ligar para GetStartPosition e GetNextPathName para obter um nome de caminho de ficheiro.
CFileDialog::GetFileTitle.
Chame esta função para recuperar o título do ficheiro inserido na caixa de diálogo.
CString GetFileTitle() const;
Valor de retorno
O título do ficheiro.
Observações
O título do ficheiro inclui apenas o seu prefixo, sem o caminho nem a extensão. Por exemplo, GetFileTitle devolverá "TEXT" para o ficheiro C:\FILES\TEXT.DAT.
Se m_ofn.Flags tiver a flag de OFN_ALLOWMULTISELECT ativada, esta cadeia contém uma sequência de cadeias terminadas em nulo, sendo a primeira cadeia o caminho do diretório do grupo de ficheiros selecionado, seguido pelos nomes de todos os ficheiros selecionados pelo utilizador. Por esta razão, utilize as funções membros GetStartPosition e GetNextPathName para recuperar o próximo nome do ficheiro na lista.
Example
Veja o exemplo para CFileDialog::D oModal.
CFileDialog::GetFolderPath
Chame esta função membro para recuperar o caminho da pasta ou diretório atualmente aberto para uma caixa de diálogo comum do estilo Abrir ou Guardar Como.
CString GetFolderPath() const;
Valor de retorno
Um objeto CString contendo a pasta ou diretório atualmente aberto.
Observações
A caixa de diálogo deve ter sido criada com o estilo OFN_EXPLORER; caso contrário, o método falhará com uma afirmação.
Só pode chamar este método enquanto a caixa de diálogo está a ser exibida. Depois de a caixa de diálogo ser fechada, esta função deixará de funcionar e o método falhará com uma asserção.
CFileDialog::GetIFileDialogPersonalizar
Recupera um ponteiro para o objeto COM interno para um dado CFileDialog.
IFileDialogCustomize* GetIFileDialogCustomize();
Valor de retorno
O apontador para o objeto COM interno para o CFileDialog. É sua responsabilidade divulgar esta dica de forma adequada.
Observações
Use esta função apenas no Windows Vista ou posteriores com um objeto que tenha o bVistaStyle definido como TRUE. Se usares esta função quando o bVistaStyle é FALSE, devolverá NULL no modo de lançamento e lançará uma asserção no modo de depuração.
Para mais informações sobre a IFileDialogCustomize interface, consulte IFileDialogCustomize.
Example
Este exemplo recupera o objeto COM interno. Para executar este exemplo de código, deve compila-lo no Windows Vista ou posteriormente.
// 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 para um dado CFileDialog.
IFileOpenDialog* GetIFileOpenDialog();
Valor de retorno
O apontador para o objeto COM interno para o CFileDialog. É sua responsabilidade divulgar esta dica de forma adequada.
Observações
Use esta função apenas no Windows Vista ou posteriores com um objeto que tenha o bVistaStyle definido como TRUE. Esta função devolve NULL se não CFileDialog for uma caixa de diálogo Open ou se o bVistaStyle estiver definido como FALSE. Neste último caso, a função só devolve NULL no modo de lançamento – no modo de depuração gera uma asserção.
Para mais informações sobre a IFileOpenDialog interface, consulte IFileOpenDialog.
Example
Este exemplo recupera o objeto COM interno. Para executar este código, tem de o compilar no Windows Vista ou posteriormente.
// 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 para um dado CFileDialog.
IFileSaveDialog* GetIFileSaveDialog();
Valor de retorno
O apontador para o objeto COM interno para o CFileDialog. É sua responsabilidade divulgar esta dica de forma adequada.
Observações
Use esta função apenas no Windows Vista ou posteriores com um objeto que tenha o bVistaStyle definido como TRUE. Esta função devolverá NULL se CFileDialog não houver uma caixa de diálogo de Guardar ou se o bVistaStyle estiver definido como FALSE. Neste último caso, a função só devolve NULL no modo de lançamento – no modo de depuração gera uma asserção.
Para mais informações sobre a IFileSaveDialog interface, consulte IFileSaveDialog.
Example
Este exemplo recupera o objeto COM interno. Para executar este exemplo de código, deve compila-lo no Windows Vista ou posteriormente.
// 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 esta função para recuperar o próximo nome de ficheiro do grupo selecionado na caixa de diálogo.
CString GetNextPathName(POSITION& pos) const;
Parâmetros
pos
Uma referência a um valor POSITION devolvido por uma chamada anterior GetNextPathName ou GetStartPosition de uma função. NULL se o fim da lista tiver sido alcançado.
Valor de retorno
O caminho completo do ficheiro.
Observações
O caminho do nome do ficheiro inclui o título do ficheiro mais todo o caminho do diretório. Por exemplo, GetNextPathName devolve "C:\FILES\TEXT. DAT" para o ficheiro C:\FILES\TEXT.DAT. Pode usar GetNextPathName num ciclo de iteração direta se estabelecer a posição inicial com uma chamada para GetStartPosition.
Se a seleção consistir apenas num ficheiro, esse nome de ficheiro será devolvido.
CFileDialog::GetOFN
Recupera a estrutura associada OPENFILENAME .
const OPENFILENAME& GetOFN() const;
OPENFILENAME& GetOFN();
Valor de retorno
Uma estrutura OPENFILENAME .
Observações
Use a segunda versão desta função para inicializar o aparecimento de uma caixa de diálogo File Open ou File Save As depois de esta ser construída, mas antes de ser exibida com a DoModal função membro. Por exemplo, podes definir o lpstrTitle membro de m_ofn para a legenda que queres que a caixa de diálogo tenha.
CFileDialog::GetPathName
Chame esta função para recuperar o caminho completo do ficheiro inserido na caixa de diálogo.
CString GetPathName() const;
Valor de retorno
O caminho completo do ficheiro.
Observações
O caminho do nome do ficheiro inclui o título do ficheiro mais todo o caminho do diretório. Por exemplo, GetPathName devolve "C:\FILES\TEXT. DAT" para o ficheiro C:\FILES\TEXT.DAT.
Se m_ofn.Flags tiver o flag de OFN_ALLOWMULTISELECT definido, esta cadeia contém uma sequência de cadeias com teminação nula, sendo a primeira cadeia o caminho do diretório do grupo de ficheiros selecionado, seguido pelos nomes de todos os ficheiros selecionados pelo utilizador. Por esta razão, utilize as funções membros GetStartPosition e GetNextPathName para recuperar o próximo nome do ficheiro na lista.
Example
Veja o exemplo para CFileDialog::D oModal.
CFileDialog::GetReadOnlyPref
Chame esta função para determinar se a caixa de seleção Apenas Leitura foi selecionada nas caixas de diálogo padrão do Windows Abrir ficheiros e Guardar Ficheiro.
BOOL GetReadOnlyPref() const;
Valor de retorno
Diferente de zero se a caixa de seleção de Apenas Leitura na caixa de diálogo estiver selecionada; caso contrário, 0.
Observações
Podes esconder a caixa de Leitura Somente definindo o estilo OFN_HIDEREADONLY no CFileDialog construtor.
Observação
Objetos do estilo CFileDialog Windows Vista ou posteriores não suportam esta função. Tentar usar esta função num estilo CFileDialog Windows Vista ou posterior irá lançar CNotSupportedException.
CFileDialog::GetResult
Recupera a escolha que o utilizador fez no diálogo.
IShellItem* GetResult() throw();
Valor de retorno
Um apontador para um IShellItem que representa a escolha do utilizador.
Observações
CFileDialog::GetResults
Recupera as escolhas do utilizador num diálogo que permite múltiplas seleções.
IShellItemArray* GetResults() throw();
Valor de retorno
Um ponteiro para um IShellItemArray através do qual se pode aceder aos itens selecionados no diálogo.
Observações
CFileDialog::GetSelectedControlControlItem
Recupera um determinado item do controlo do contentor especificado no diálogo.
HRESULT GetSelectedControlItem(
DWORD dwIDCtl,
DWORD& dwIDItem);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
O ID do item que o utilizador selecionou no controlo.
Observações
CFileDialog::GetStartPosition
Chame esta função membro para recuperar a posição do primeiro nome de caminho do ficheiro na lista, se m_ofn.Flags tiver o flag de OFN_ALLOWMULTISELECT definido.
POSITION GetStartPosition() const;
Valor de retorno
Um valor POSITION que pode ser usado para iteração; NULL se a lista estiver vazia.
CFileDialog::HideControl
Chame esta função membro para ocultar o controlo especificado numa caixa de diálogo comum ao estilo Explorer, Abrir ou Guardar Como.
void HideControl(int nID);
Parâmetros
nID
O ID do controlo para esconder.
Observações
A caixa de diálogo deve ter sido criada com o estilo OFN_EXPLORER; caso contrário, a função falhará com uma afirmação.
CFileDialog::IsPickFoldersMode
Determina se o diálogo atual está em modo seletor de pastas.
BOOL IsPickFoldersMode() const;
Valor de retorno
TRUE se o diálogo estiver em modo seletor de pastas; caso contrário, FALSO.
Observações
CFileDialog::m_ofn
m_ofn é uma estrutura do tipo OPENFILENAME. Os dados nesta estrutura representam o estado atual do CFileDialog.
Observações
Use esta estrutura para inicializar a aparência de uma caixa de diálogo File Open ou File Save As depois de a construir, mas antes de a exibir com o método DoModal . Por exemplo, podes definir o membro lpstrTitle de m_ofn para a legenda que queres que a caixa de diálogo tenha.
Com o estilo CFileDialog do Windows Vista ou posterior, m_ofn não é garantido que corresponda sempre ao estado da caixa de diálogo. Está sincronizado com a caixa de diálogo nas versões anteriores do Windows. Consulte CFileDialog::ApplyOFNToShellDialog e CFileDialog::UpdateOFNFromShellDialog para mais informações sobre a sincronização da m_ofn estrutura e do CFileDialog estado no Windows Vista ou posteriormente.
Os diálogos de ficheiros do Windows Vista ou versões posteriores não suportam certos membros e flags do CFileDialogarquivo . Como resultado, estes não terão efeito.
Segue-se uma lista dos membros que não são suportados pelo Windows Vista ou versões posteriores:
lpstrCustomFilterlpstrInitialDirlCustDatalpfnHooklpTemplateName
As seguintes flags não são suportadas e, por isso, não têm efeito quando usa o estilo Windows Vista ou posterior:CFileDialog
OFN_ENABLEHOOK
OFN_ENABLEINCLUDENOTIFY
OFN_ENABLETEMPLATE
OFN_ENABLETEMPLATEHANDLE
OFN_EXPLORER
OFN_EXTENSIONDIFFERENT
OFN_HIDEREADONLY
OFN_LONGNAMES - praticamente sempre ativado no Windows Vista ou versões posteriores
OFN_NOLONGNAMES - praticamente sempre desligado no Windows Vista ou versões posteriores
OFN_NONETWORKBUTTON - efetivamente sempre ativado no Windows Vista ou versões posteriores
OFN_READONLY
OFN_SHOWHELP
Para mais informações sobre esta estrutura, consulte a estrutura OPENFILENAME no SDK do Windows.
CFileDialogue::MakeProminent
Coloca um controlo no diálogo para que se destaque em relação a outros controlos.
HRESULT MakeProminent(DWORD dwIDCtl);
Parâmetros
dwIDCtl
A ID do controle.
Observações
CFileDialog::OnButtonClicked
Liga quando o botão é carregado.
virtual void OnButtonClicked(DWORD dwIDCtl);
Parâmetros
dwIDCtl
O ID do botão.
Observações
CFileDialog::OnCheckButtonToggle
É chamado quando a caixa está marcada ou desmarcada.
virtual void OnCheckButtonToggled(
DWORD dwIDCtl,
BOOL bChecked);
Parâmetros
dwIDCtl
O ID da caixa de verificação.
bVerificado
Verificado ou não.
Observações
CFileDialog::OnControlAtivar
É chamado quando o controlo é ativado.
virtual void OnControlActivating(DWORD dwIDCtl);
Parâmetros
dwIDCtl
A ID do controle.
Observações
CFileDialog::OnFileNameChange
Anule este método se quiser tratar da mensagem WM_NOTIFY CDN_SELCHANGE.
virtual void OnFileNameChange();
Observações
O sistema envia a mensagem CDN_SELCHANGE quando o utilizador seleciona um novo ficheiro ou pasta na lista de ficheiros da caixa de diálogo Abrir ou Guardar Como . Anule este método se quiser realizar alguma ação em resposta a esta mensagem.
O sistema envia esta mensagem apenas se a caixa de diálogo foi criada com a bandeira de OFN_EXPLORER ativada. Para mais informações sobre a notificação, consulte CDN_SELCHANGE. Para informações sobre a flag de OFN_EXPLORER, consulte a estrutura OPENFILENAME e as Caixas de Diálogo Abrir e Guardar Como.
CFileDialog::OnFileNameOK
Substitua esta função apenas se quiser fornecer uma validação personalizada dos nomes de ficheiros inseridos numa caixa de diálogo comum de ficheiros.
virtual BOOL OnFileNameOK();
Valor de retorno
1 se o nome do ficheiro não for válido; caso contrário, 0.
Observações
Esta função permite-lhe rejeitar um nome de ficheiro por qualquer motivo específico da aplicação. Normalmente, não é necessário usar esta função porque o framework fornece validação por defeito dos nomes de ficheiros e apresenta uma caixa de mensagem caso um nome de ficheiro inválido seja introduzido.
Se o 1 for devolvido, a caixa de diálogo permanecerá exibida para que o utilizador possa inserir outro nome de ficheiro. O procedimento de diálogo encerra o diálogo se o retorno for 0. Outros valores de retorno não nulos estão atualmente reservados e não devem ser utilizados.
CFileDialog::OnFolderChange
Substitua esta função para tratar da mensagem WM_NOTIFYCDN_FOLDERCHANGE.
virtual void OnFolderChange();
Observações
A mensagem de notificação é enviada quando uma nova pasta é aberta na caixa de diálogo Abrir ou Guardar Como.
A notificação só é enviada se a caixa de diálogo foi criada com o estilo OFN_EXPLORER. Para mais informações sobre a notificação, consulte CDN_FOLDERCHANGE. Para informações sobre o estilo OFN_EXPLORER, consulte a estrutura OPENFILENAME e as Caixas de Diálogo Abrir e Guardar Como.
CFileDialog::OnInitDone
Substitua esta função para tratar da mensagem WM_NOTIFY CDN_INITDONE.
virtual void OnInitDone();
Observações
O sistema envia esta mensagem de notificação quando termina de organizar os controlos na caixa de diálogo Abrir ou Guardar Como para abrir espaço aos controlos da caixa de diálogo filho.
O sistema só envia isto se a caixa de diálogo foi criada com o estilo OFN_EXPLORER. Para mais informações sobre a notificação, consulte CDN_INITDONE. Para informações sobre o estilo OFN_EXPLORER, consulte a estrutura OPENFILENAME e as Caixas de Diálogo Abrir e Guardar Como.
Observação
Os diálogos de ficheiros do Windows Vista ou versões posteriores não suportam esta função. Tentar usar esta função num diálogo de ficheiro do estilo Windows Vista ou posterior irá lançar CNotSupportedException.
CFileDialog::OnItemSelecionado
É chamado quando o item do contentor é selecionado.
virtual void OnItemSelected(
DWORD dwIDCtl,
DWORD dwIDItem);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
A ID do item.
Observações
CFileDialog::OnLBSelChangedNotify
Esta função é chamada sempre que a seleção atual numa caixa de lista está prestes a mudar.
virtual void OnLBSelChangedNotify(
UINT nIDBox,
UINT iCurSel,
UINT nCode);
Parâmetros
nIDBox
O ID da caixa de lista ou caixa de combo onde ocorreu a seleção.
iCurSel
O índice da seleção atual.
nCode
O código de notificação de controlo. Este parâmetro deve ter um dos seguintes valores:
CD_LBSELCHANGE Especifica o iCurSel é o item selecionado numa caixa de lista de seleção única.
CD_LBSELSUB Especifica que o iCurSel já não é selecionado numa caixa de lista multiseleção.
CD_LBSELADD Especifica que o iCurSel é selecionado numa caixa de lista de multiseleção.
CD_LBSELNOITEMS Especifica que não existe nenhuma seleção numa caixa de lista de multisseleção.
Observações
Substitua esta função para fornecer um tratamento personalizado das alterações de seleção na caixa de lista. Por exemplo, pode usar esta função para mostrar os direitos de acesso ou a data de última modificação de cada ficheiro selecionado pelo utilizador.
CFileDialog::OnShareViolation
Substitua esta função para fornecer um tratamento personalizado das violações de partilhas.
virtual UINT OnShareViolation(LPCTSTR lpszPathName);
Parâmetros
lpszPathName
O percurso do ficheiro onde ocorreu a violação de partilha.
Valor de retorno
Um dos seguintes valores:
OFN_SHAREFALLTHROUGH O nome do ficheiro é devolvido da caixa de diálogo.
OFN_SHARENOWARN Não é necessário tomar mais nenhuma medida.
OFN_SHAREWARN O utilizador recebe a mensagem padrão de aviso para este erro.
Observações
Normalmente, não precisa de usar esta função porque o framework fornece verificação padrão de violações de partilha e exibe uma caixa de mensagem caso ocorra uma violação de partilha.
Se quiser desativar a verificação de violações de partilha, use o operador bit a bit OR para combinar a flag OFN_SHAREAWARE com m_ofn.Flags.
CFileDialog::OnTypeChange
Substitua esta função para tratar da mensagem WM_NOTIFYCDN_TYPECHANGE.
virtual void OnTypeChange();
Observações
A mensagem de notificação é enviada quando o utilizador seleciona um novo tipo de ficheiro da lista de tipos de ficheiro na caixa de diálogo Abrir ou Guardar Como.
A notificação só é enviada se a caixa de diálogo foi criada com o estilo OFN_EXPLORER. Para mais informações sobre a notificação, consulte CDN_TYPECHANGE. Para informações sobre o estilo OFN_EXPLORER, consulte a estrutura OPENFILENAME e as Caixas de Diálogo Abrir e Guardar Como.
CFileDialog::RemoveControlItem
Remove um item de um controlo de contentor no diálogo.
HRESULT RemoveControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parâmetros
dwIDCtl
O ID do controlo do contentor para remover o item de.
dwIDItem
A ID do item.
Observações
CFileDialog::SetCheckButtonState
Define o estado atual de um botão de verificação (caixa de verificação) no diálogo.
HRESULT SetCheckButtonState(
DWORD dwIDCtl,
BOOL bChecked);
Parâmetros
dwIDCtl
O ID da caixa de verificação.
bVerificado
O estado da caixa de seleção. TRUE indica verificado; FALSE indica Sem verificação.
Observações
CFileDialog::SetControlItemState
Define o estado atual de um item num controlo de contentor encontrado no diálogo.
HRESULT SetControlItemState(
DWORD dwIDCtl,
DWORD dwIDItem,
CDCONTROLSTATEF dwState);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
A ID do item.
dwState
Um ou mais valores da enumeração CDCONTROLSTATE que indicam o novo estado do controlo.
Observações
CFileDialog::SetControlItemText
Define o texto de um item de controlo. Por exemplo, o texto que acompanha um botão de acesso ou um item num menu.
HRESULT SetControlItemText(
DWORD dwIDCtl,
DWORD dwIDItem,
const CString& strLabel);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
A ID do item.
strLabel
Texto do item.
Observações
CFileDialog::SetControlLabel
Define o texto associado a um controlo, como texto de botão ou um rótulo de caixa de edição.
HRESULT SetControlLabel(
DWORD dwIDCtl,
const CString& strLabel);
Parâmetros
dwIDCtl
A ID do controle.
strLabel
O nome do controlo.
Observações
CFileDialog::SetControlState
Define a visibilidade atual e os estados habilitados de um determinado controlo.
HRESULT SetControlState(
DWORD dwIDCtl,
CDCONTROLSTATEF dwState);
Parâmetros
dwIDCtl
A ID do controle.
dwState
Um ou mais valores da enumeração CDCONTROLSTATE que indicam o estado atual do controlo.
Observações
CFileDialog::SetControlText
Chame este método para definir o texto do controlo especificado numa caixa de diálogo Abrir ou Guardar Como ao estilo Explorador.
void SetControlText(
int nID,
LPCSTR lpsz);
void SetControlText(
int nID,
const wchar_t *lpsz);
Parâmetros
nID
[dentro] O ID do controlo para o qual definir o texto.
lpsz
[dentro] Um ponteiro para a cadeia que contém o texto a definir para o controlo.
Observações
Ambas as versões desta função são válidas para aplicações que utilizam Unicode. No entanto, apenas a versão com o tipo LPCSTR é válida para aplicações que utilizam ANSI.
Para usar este método, tens de criar a caixa de diálogo com o estilo OFN_EXPLORER. Caso contrário, a função falhará com uma afirmação.
CFileDialog::SetDefExt
Chame esta função para definir a extensão padrão do nome do ficheiro para uma caixa de diálogo comum do estilo Explorer, Abrir ou Guardar Como.
void SetDefExt(LPCSTR lpsz);
Parâmetros
lpsz
Um ponteiro para uma string contendo a extensão padrão a usar para o objeto da caixa de diálogo. Esta cadeia não pode conter um ponto (.).
Observações
A caixa de diálogo deve ter sido criada com o estilo OFN_EXPLORER; caso contrário, a função falhará com uma afirmação.
CFileDialog::SetEditBoxText
Define o texto atual num controlo de caixa de edição.
HRESULT SetEditBoxText(
DWORD dwIDCtl,
const CString& strText);
Parâmetros
dwIDCtl
O ID da caixa de edição.
strText
O valor do texto.
Observações
CFileDialog::SetProperties
Fornece um armazenamento de propriedades que define os valores padrão a serem usados para o item a ser guardado.
BOOL SetProperties(LPCWSTR lpszPropList);
Parâmetros
lpszPropList
Uma lista de propriedades pré-definidas separadas por ";". Para uma lista das bandeiras, consulte a secção Flags do OPENFILENAME.
Observações
CFileDialog::SetSelectedControlControlItem
Define o estado selecionado de um determinado item num grupo de botões de opção ou numa caixa de combo encontrada no diálogo.
HRESULT SetSelectedControlItem(
DWORD dwIDCtl,
DWORD dwIDItem);
Parâmetros
dwIDCtl
O ID do controlo do contentor.
dwIDItem
O ID do item que o utilizador selecionou no controlo.
Observações
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
[dentro] Contém o número ID do recurso template para o objeto não-Explorer CFileDialog . Este modelo é usado apenas no Windows NT 3.51 ou quando o estilo OFN_EXPLORER não está presente.
nWin4ID
[dentro] Contém o número ID do recurso modelo para o objeto Explorer CFileDialog . Este modelo é usado apenas no Windows NT 4.0 e versões posteriores, Windows 95 e versões posteriores, ou quando o estilo OFN_EXPLORER está presente.
lpWin3ID
[dentro] Contém o nome do recurso template para o objeto que não é Explorer CFileDialog . Este modelo é usado apenas no Windows NT 3.51 ou quando o estilo OFN_EXPLORER não está presente.
lpWin4ID
[dentro] Contém o nome do recurso template do objeto Explorer CFileDialog . Este modelo é usado apenas no Windows NT 4.0 e versões posteriores, Windows 95 e versões posteriores, ou quando o estilo OFN_EXPLORER está presente.
Observações
O sistema utilizará apenas um dos modelos especificados. O sistema determina qual o modelo a usar com base na presença do estilo OFN_EXPLORER e no sistema operativo em que a aplicação está a correr. Ao especificar tanto um modelo ao estilo não Explorador como o Explorador, é fácil suportar o Windows NT 3.51, Windows NT 4.0 e versões posteriores, e o Windows 95 e versões posteriores.
Observação
As caixas de diálogo de ficheiros do Windows Vista ou versões posteriores não suportam esta função. Tentar usar esta função numa caixa de diálogo de ficheiro do Windows Vista ou posterior irá lançar CNotSupportedException. Uma alternativa é usar um diálogo personalizado. Para mais informações sobre o uso de um personalizado CFileDialog, veja IFileDialogCustomize.
CFileDialog::StartVisualGroup
Declara um grupo visual no diálogo. Chamadas subsequentes a qualquer método "add" adicionam esses elementos a este grupo.
HRESULT StartVisualGroup(
DWORD dwIDCtl,
const CString& strLabel);
Parâmetros
dwIDCtl
O ID do grupo visual.
strLabel
O nome do grupo.
Observações
CFileDialog::UpdateOFNFromShellDialog
Atualiza a m_ofn estrutura de dados do CFileDialog com base no estado atual do objeto interno.
void UpdateOFNFromShellDialog();
Observações
Nas versões do Windows anteriores ao Windows Vista, a estrutura de dados membro OPENFILENAME era continuamente sincronizada com o estado do CFileDialog. Qualquer alteração à variável m_ofn membro afetava diretamente o estado da caixa de diálogo. Além disso, quaisquer alterações ao estado do diálogo atualizavam imediatamente a variável m_ofn membro.
No Windows Vista ou versões posteriores, a m_ofn estrutura de dados não é atualizada automaticamente. Para garantir a precisão dos dados na m_ofn variável membro, deve chamar a UpdateOFNFromShellDialog função antes de aceder aos dados. O Windows chama esta função automaticamente durante o processamento do IFileDialog::OnFileOK.
Para mais informações sobre como usar a CFileDialog classe no Windows Vista ou versões posteriores, consulte Classe CFileDialog.
Example
Este exemplo atualiza o CFileDialog antes de o exibir. Antes de atualizar a m_ofn variável membro, precisamos de a sincronizar 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();