Visual – MFC – CFileDialog – C++

Publicado: 24 de abril de 2014 em C/C++

Em computação caixas de diálogo reutilizáveis ​​que são comuns a todas as aplicações, incluindo caixas de diálogo para abrir arquivos, salvar arquivos e impressão. Uma vez que estas caixas de diálogo são implementadas pelo sistema operacional, ou classes no caso de linguagens multi plataforma,  podem ser compartilhadas entre todos os aplicativos que são executados no sistema operacional, o que ajuda o usuário a experiência de consistência; quando os usuários estão familiarizados com o uso de uma caixa de diálogo de funcionamento fornecido pelo sistema em um aplicativo, eles não precisam aprender a usar essa caixa de diálogo em outras aplicações. Como essas caixas de diálogo estão disponíveis para todas as aplicações e porque ajudam a proporcionar uma experiência de usuário consistente

CFileDialog

Encapsula a caixa de diálogo comum que é usado para abrir um arquivo ou salvar um arquivo. CFileDialog depende do arquivo COMMDLG.DLL que está incluído no Windows.

cfiledialog

Visual Studio

  1. Crie um projeto MFC Dialog Based.
  2. Coloque no dialogo os seguintes componentes: um Static Text, um Edit Control e dois Buttons.
  3. Cria uma variável chamada m_texto para o Edit Control.
  4. Crie um evento BN_CLICKED para cada botão.
  5. Use a imagem acima para dispor os componentes no dialogo.
  6. Preencha o seu código gerado automaticamente com os trechos marcados do código abaixo:

Exemplo:

Neste exemplo usamos a classe CFileDialog para usar os diálogos comuns e retornar o caminho do arquivo selecionado.

C++

// Código gerado automaticamente
// DialogoscppDlg.cpp : implementation file
//

#include "stdafx.h"
#include "Dialogoscpp.h"
#include "DialogoscppDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

CDialogoscppDlg::CDialogoscppDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CDialogoscppDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CDialogoscppDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_EDIT1, m_texto);
}

BEGIN_MESSAGE_MAP(CDialogoscppDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CDialogoscppDlg::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CDialogoscppDlg::OnBnClickedButton2)
END_MESSAGE_MAP()

BOOL CDialogoscppDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	SetIcon(m_hIcon, TRUE);			
	SetIcon(m_hIcon, FALSE);		

	return TRUE;  
}

void CDialogoscppDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); 

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;
				
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}


HCURSOR CDialogoscppDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}

// Desenvolvimento Aberto
// Nosso código começa aqui.

void CDialogoscppDlg::OnBnClickedButton1()
{
	CString filtro = L"Texto (*.txt)|*.txt"  ;
		
	CFileDialog dialogo(TRUE, L".txt", NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST | 
	                            OFN_PATHMUSTEXIST, filtro);
		
	if (dialogo.DoModal() == IDOK)
	{			
		// TODO: coloque suas funcionalidades aqui
		CString caminho = dialogo.GetPathName();	
		m_texto.SetWindowTextW(caminho);
	}
}


void CDialogoscppDlg::OnBnClickedButton2()
{		
	CString filtro = L"Texto (*.txt)|*.txt";

	CFileDialog dialogo(TRUE, L".txt", NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST |
		OFN_PATHMUSTEXIST, filtro);

	if (dialogo.DoModal() == IDOK)
	{
		// TODO: coloque suas funcionalidades aqui.
		CString caminho = dialogo.GetPathName();
		m_texto.SetWindowTextW(caminho);
	}
}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s