Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Neste passo a passo, você criará um aplicativo semelhante ao Explorador de Arquivos. Você criará uma janela com dois painéis. O painel esquerdo conterá um objeto CMFCShellTreeCtrl que exibe a sua área de trabalho numa exibição hierárquica. O painel direito manterá um CMFCShellListCtrl que mostra os arquivos na pasta selecionada no painel esquerdo.
Pré-requisitos
No Visual Studio 2017 e posterior, o suporte a MFC é um componente opcional. Para instalá-lo, abra o Visual Studio Installer no menu Iniciar do Windows. Localize a versão do Visual Studio que você está usando e escolha o botão Modificar . Certifique-se de que o painel Desenvolvimento de Desktop com C++ está marcado. Em Componentes opcionais, verifique o botão Suporte MFC .
Este passo a passo pressupõe que você tenha configurado o Visual Studio para usar as Configurações Gerais de Desenvolvimento. Se você estiver usando uma configuração de desenvolvimento diferente, algumas janelas do Visual Studio que usamos neste passo a passo podem não ser exibidas por padrão.
Para criar um novo aplicativo MFC usando o Assistente de aplicativo MFC
Essas etapas variam dependendo de qual versão do Visual Studio você está usando. Para ver a documentação da sua versão preferida do Visual Studio, use o controlador de seleção Versão . Encontra-se na parte superior do índice desta página.
Para criar um projeto MFC no Visual Studio
No menu principal, escolha Arquivo>Novo>Projeto para abrir a caixa de diálogo Criar um Novo Projeto .
Na caixa de pesquisa na parte superior, digite MFC e escolha MFC App na lista de resultados.
Clique em Next. Na página seguinte, insira um nome para o projeto e especifique o local do projeto, se desejado.
Escolha o botão Criar para criar o projeto.
Depois de o MFC Application Wizard ser exibido, use as seguintes opções:
Escolha Tipo de aplicativo à esquerda. Em seguida, selecione Documento único e selecione Suporte à arquitetura Documento/Exibição. Em Estilo do projeto, selecione Visual Studio e, na lista suspensa Estilo visual e cores, selecione Office 2007 (tema azul).
No painel Suporte a Documentos Compostos , selecione Nenhum.
Não faça alterações no painel Propriedades do Modelo de Documento .
No painel Recursos da Interface do Usuário , verifique se a opção Usar uma barra de menus e barra de ferramentas está selecionada. Deixe todas as outras opções como estão.
No painel Recursos Avançados , selecione Controles ActiveX, Manifesto de Controle Comum e Opção Painel de Navegação . Deixe tudo o resto como está. A opção Painel de Navegação fará com que o assistente crie o painel à esquerda da janela com um
CMFCShellTreeCtrljá incorporado.Não faremos nenhuma alteração no painel Classes geradas , portanto, clique em Concluir para criar seu novo projeto MFC.
Para criar um projeto MFC no Visual Studio 2017 ou anterior
Use o MFC Application Wizard para criar um novo aplicativo MFC. Para executar o assistente, no menu Arquivo , selecione Novo e, em seguida, selecione Projeto. A caixa de diálogo Novo projeto será exibida.
Na caixa de diálogo 'Novo Projeto', expanda o nó Visual C++ no painel 'Tipos de Projeto' e selecione MFC. Em seguida, no painel Modelos , selecione Aplicativo MFC. Digite um nome para o projeto, como
MFCShellControlse clique em OK.Depois de o MFC Application Wizard ser exibido, use as seguintes opções:
Na aba Tipo de aplicativo, em Tipo de aplicativo, desmarque a opção Documentos separados por guias. Em seguida, selecione Documento único e selecione Suporte à arquitetura Documento/Exibição. Em Estilo do projeto, selecione Visual Studio e, na lista suspensa Estilo visual e cores, selecione Office 2007 (tema azul).
No painel Suporte a Documentos Compostos , selecione Nenhum.
Não faça alterações no painel Cadeias de Caracteres do Modelo de Documento .
No painel Suporte de Banco de Dados (Visual Studio 2015 e versões anteriores), selecione Nenhum porque o aplicativo não usa um banco de dados.
No painel Recursos da Interface do Usuário , verifique se a opção Usar uma barra de menus e barra de ferramentas está selecionada. Deixe todas as outras opções como estão.
No painel Recursos Avançados , em Recursos avançados, selecione somente controles ActiveX e Manifesto de Controle Comum. Em Painéis de quadros avançados, selecione apenas a opção Painel de navegação . Isso fará com que o assistente crie o painel à esquerda da janela com um
CMFCShellTreeCtrljá incorporado.Não faremos nenhuma alteração no painel Classes geradas , portanto, clique em Concluir para criar seu novo projeto MFC.
Verifique se o aplicativo foi criado com êxito criando-o e executando-o. Para criar o aplicativo, no menu Build , selecione Build Solution. Se a aplicação for compilada com êxito, inicie a aplicação selecionando Iniciar depuração no menu Depurar.
O assistente cria automaticamente uma aplicação que tem uma barra de menus padrão, uma barra de ferramentas padrão, uma barra de estado padrão e uma barra do Outlook à esquerda da janela com uma vista de Pastas e uma vista de Calendário.
Para adicionar o controle de lista de shell à exibição de documento
Nesta secção, adicionarás uma instância de
CMFCShellListCtrlao modo de exibição criado pelo assistente. Abra o arquivo de cabeçalho de exibição clicando duas vezes em MFCShellControlsView.h no Gerenciador de Soluções.Localize a
#pragma oncediretiva perto da parte superior do arquivo de cabeçalho. Imediatamente abaixo adicione este código para incluir o arquivo de cabeçalho paraCMFCShellListCtrl:#include <afxShellListCtrl.h>Agora adicione uma variável membro do tipo
CMFCShellListCtrl. Primeiro, localize o seguinte comentário no arquivo de cabeçalho:// Generated message map functionsImediatamente acima desse comentário, adicione este código:
private: CMFCShellListCtrl m_wndList;O MFC Application Wizard já criou um
CMFCShellTreeCtrlobjeto naCMainFrameclasse, mas é um membro protegido. Acessaremos o objeto mais tarde, portanto, crie um acessador para ele agora. Abra o arquivo de cabeçalho MainFrm.h clicando duas vezes nele no Gerenciador de Soluções. Localize o seguinte comentário:// AttributesImediatamente abaixo dele, adicione a seguinte declaração de método:
public: CMFCShellTreeCtrl& GetShellTreeCtrl();Em seguida, abra o arquivo de origem MainFrm.cpp clicando duas vezes nele no Gerenciador de Soluções. Na parte inferior desse arquivo, adicione a seguinte definição de método:
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }Agora atualizamos a
CMFCShellControlsViewclasse para lidar com a mensagem doWM_CREATEWindows. Abra a janela Class View e selecione aCMFCShellControlsViewclasse. Clique com o botão direito do mouse e selecione Propriedades.Em seguida, no Assistente de classe, clique na guia Mensagens . Role para baixo até encontrar a
WM_CREATEmensagem. Na lista pendente ao lado deWM_CREATE, selecione <Adicionar> OnCreate. O comando cria um manipulador de mensagens para nós e atualiza automaticamente o mapa de mensagens MFC.No método
OnCreate, agora criaremos o objetoCMFCShellListCtrl. Encontre a definição deOnCreatemétodo no arquivo de origem MFCShellControlsView.cpp e substitua sua implementação pelo seguinte código:int CMFCShellControlsView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; CRect rectDummy (0, 0, 0, 0); m_wndList.Create(WS_CHILD | WS_VISIBLE | LVS_REPORT, rectDummy, this, 1); return 0; }Repita a etapa anterior, mas para a mensagem
WM_SIZE. Isso fará com que a visualização de seus aplicativos seja redesenhada sempre que um usuário alterar o tamanho da janela do aplicativo. Substitua a definição para oOnSizemétodo com o seguinte código:void CMFCShellControlsView::OnSize(UINT nType, int cx, int cy) { CView::OnSize(nType, cx, cy); m_wndList.SetWindowPos(NULL, -1, -1, cx, cy, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); }A última etapa é conectar os
CMFCShellTreeCtrlobjetos eCMFCShellListCtrlusando o método CMFCShellTreeCtrl::SetRelatedList . Depois de chamar oCMFCShellTreeCtrl::SetRelatedList, oCMFCShellListCtrlexibirá automaticamente o conteúdo do item selecionado noCMFCShellTreeCtrl. Conectamos osOnActivateViewobjetos no método, que é sobrescrito por CView::OnActivateView.No arquivo de cabeçalho MFCShellControlsView.h, dentro da declaração de
CMFCShellControlsViewclasse, adicione a seguinte declaração de método:protected: virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);Em seguida, adicione a definição para o método ao arquivo de origem MFCShellControlsView.cpp:
void CMFCShellControlsView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { if (bActivate&& AfxGetMainWnd() != NULL) { ((CMainFrame*)AfxGetMainWnd())->GetShellTreeCtrl().SetRelatedList(&m_wndList); } CView::OnActivateView(bActivate, pActivateView, pDeactiveView); }Como estamos chamando métodos da
CMainFrameclasse, devemos adicionar uma#includediretiva na parte superior do arquivo de origem MFCShellControlsView.cpp:#include "MainFrm.h"Verifique se o aplicativo foi criado com êxito criando-o e executando-o. Para criar o aplicativo, no menu Build , selecione Build Solution. Se a aplicação for compilada com sucesso, execute-a selecionando Iniciar Depuração no menu Depurar.
Agora você deve ver os detalhes do item selecionado no
CMFCShellTreeCtrlpainel de exibição. Quando você clica em um nó noCMFCShellTreeCtrl, oCMFCShellListCtrlserá atualizado automaticamente. Da mesma forma, se você clicar duas vezes em uma pasta noCMFCShellListCtrl, oCMFCShellTreeCtrldeve ser atualizado automaticamente.Clique com o botão direito do mouse em qualquer item no controle de árvore ou no controle de lista. Você obtém o mesmo menu de contexto como se estivesse usando o Explorador de Arquivos real.
Próximos passos
O assistente criou uma barra do Outlook com um painel Pastas e um painel Calendário . Provavelmente não faz sentido ter um painel Calendário numa janela do Explorer , por isso remova esse painel agora.
O
CMFCShellListCtrlsuporta a visualização de arquivos em diferentes modos, como ícones grandes, ícones pequenos, lista e detalhes. Atualize seu aplicativo para implementar essa funcionalidade. Dica: consulte Exemplos do Visual C++.