CFileDialog::CFileDialog
Chamar essa função para construir uma caixa de diálogo padrão do arquivo 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
[in]bOpenFileDialog
O parâmetro que especifica o tipo da caixa de diálogo para criar.Defina a TRUE para construir uma caixa de diálogo de Abrir Arquivo .Defina a FALSE para construir uma caixa de diálogo de Salvar arquivo como .[in]lpszDefExt
A extensão de nome de arquivo padrão.Se o usuário não inclui uma extensão (conhecida uma que tem uma associação no computador do usuário) na caixa de nome de arquivo, a extensão especificada por lpszDefExt é automaticamente acrescentado ao nome do arquivo.Se esse parâmetro é NULL, nenhuma extensão é acrescentado.[in]lpszFileName
O nome de arquivo inicial que aparece na caixa de nome de arquivo.Se NULL, nenhum nome de arquivo inicial é exibida.[in]dwFlags
Uma combinação de um ou vários sinalizadores que você pode usar para personalizar a caixa de diálogo.Para obter uma descrição desses sinalizadores, consulte a estrutura de OPENFILENAME em Windows SDK.Se você alterar o membro de estrutura de m_ofn.Flags , use o operador OU bit a bits em suas alterações para manter o comportamento padrão intacto.[in]lpszFilter
Uma série de pares de cadeia de caracteres que especificam você pode aplicar filtros para o arquivo.Se você especificar filtros de arquivo, somente os arquivos que correspondem critérios de filtragem aparecerão na lista de arquivos.Consulte a seção comentários para obter mais informações sobre como trabalhar com filtros de arquivo.[in]pParentWnd
Um ponteiro para a janela pai ou do proprietário da caixa de diálogo de arquivo.[in]dwSize
O tamanho da estrutura de OPENFILENAME .Esse valor depende da versão do sistema operacional.O MFC usou este parâmetro para determinar o tipo apropriado da caixa de diálogo criar (por exemplo, novas caixas de diálogo de Windows 2000 em vez das caixas de diálogo NT4).O tamanho padrão 0 significa que o código MFC determinará o tamanho correto da caixa de diálogo para usar com base na versão do sistema operacional em que o programa é executado.[in]bVistaStyle
Observação Este parâmetro está disponível no Visual Studio 2008 e posteriores e é fará com que a caixa de diálogo de recentemente estilo a ser usada somente se você está em execução em Windows Vista ou posterior.O parâmetro especifica que o estilo da caixa de diálogo de arquivo.Defina como TRUE para usar novas caixas de diálogo de arquivo de estilo de vista.Caso contrário, o estilo antigo caixas de diálogo será usado.Consulte a seção comentários para obter mais informações sobre a execução sob a vista.
Comentários
Abrir Arquivo ou a caixa de diálogo de Salvar arquivo como são construídos, dependendo do valor de bOpenFileDialog.
Especificar uma extensão padrão usando lpszDefExt não pode produzir o comportamento esperado, porque raramente é previsível extensões que têm associações do arquivo no computador do usuário.Se você precisar ter mais controle sobre acrescentar de uma extensão padrão, você pode derivar sua própria classe de CFileDialog, e substitui o método de CFileDialog::OnFileNameOK para executar seu próprio tratamento de extensão.
Para permitir que o usuário para selecionar vários arquivos, defina o parâmetro de OFN_ALLOWMULTISELECT antes de chamar DoModal.Você deve fornecer seu próprio buffer de nome de arquivo para armazenar a lista retornado de vários nomes de arquivo.Faça isso substituindo m_ofn.lpstrFile com um ponteiro para um buffer que você atribuiu, depois que você constrói CFileDialog, mas antes de chamar DoModal.Além disso, você deve definir m_ofn.nMaxFile com o número de caracteres em buffer apontado por m_ofn.lpstrFile.Se você definir o número máximo de arquivos sejam selecionados a n, o tamanho do buffer é necessário n* (_MAX_PATH + 1) + 1.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 para redimensionar uma caixa de diálogo do estilo usando o mouse ou o teclado, defina o parâmetro de OFN_ENABLESIZING .Defina este sinalizador é necessário somente se você fornecer um procedimento de gancho ou um modelo de personalizado.O sinalizador funciona somente com uma caixa de diálogo do estilo; as caixas de diálogo antiquadas não podem ser redimensionadas.
O parâmetro de lpszFilter é usado para determinar o tipo de nome de arquivo que um arquivo deve ter que ser exibido na lista de arquivos.A primeira cadeia de caracteres em pares de cadeia 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 (; “caractere”) como o delimitador.Termina de cadeia de caracteres com dois “|” caracteres, seguido por um caractere de NULL .Você também pode usar um objeto de CString para esse parâmetro.
Por exemplo, Microsoft Excel permite aos usuários abrir arquivos que têm as extensões .xlc (gráfico) ou .xls planilha (), entre outros.O filtro para o excel pode ser escrita da seguinte:
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ê planejar usar essa cadeia de caracteres para atualizar diretamente a estrutura de OPENFILENAME , você deve limitar as cadeias de caracteres com o caractere nulo, \ “0 ", em vez das barras verticais (“|").
O parâmetro de bVistaStyle é aplicável somente ao executar em Windows Vista.Em versões anteriores do Windows, este parâmetro é ignorado.Se bVistaStyle é definido como TRUE, quando você criar um programa com Visual Studio 2008 ou posterior, o novo estilo Caixa de Diálogo Arquivo de vista será usado.Caso contrário, o estilo anterior Caixa de Diálogo Arquivo MFC será usado.Consulte Classe de CFileDialog para maiores informações.
Os modelos da caixa de diálogo não são suportados nas caixas de diálogo com base em bVistaStyle
Exemplo
Consulte o exemplo para CFileDialog::DoModal.
Requisitos
Header:afxdlgs.h