Partilhar via


Instruções passo a passo: usando os novos controles de shell MFC

Neste passo a passo, você criará um aplicativo semelhante ao Explorador de Arquivos. Você criará uma janela com dois painéis. O painel esquerdo terá um objeto CMFCShellTreeCtrl que exibe sua Área de Trabalho com uma exibição hierárquica. O painel direito terá um CMFCShellListCtrl que mostra os arquivos na pasta selecionada no painel esquerdo.

Pré-requisitos

  • No Visual Studio 2017 e posteriores, o suporte para o MFC é um componente opcional. Para instalá-lo, abra o Instalador do Visual Studio no menu Iniciar do Windows. Localize a versão do Visual Studio que você está usando e escolha o botão Modificar. Verifique se o bloco Desenvolvimento de Área de Trabalho com C++ está marcado. Em Componentes Opcionais, verifique o botão Suporte ao 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 poderão não ser exibidas por padrão.

Para criar um aplicativo MFC usando o Assistente de Aplicativo MFC

Estas etapas variam dependendo da versão do Visual Studio que você está usando. Para ver a documentação da sua versão preferencial do Visual Studio, use o controle seletor de Versão. Ele é encontrado na parte superior da tabela de conteúdo nesta página.

Para criar um projeto do MFC no Visual Studio

  1. No menu principal, escolha Arquivo>Novo>Projeto para abrir a caixa de diálogo Criar um projeto.

  2. Na caixa de diálogo na parte superior, digite MFC e escolha Aplicativo MFC na lista de resultados.

  3. Clique em Avançar. Na próxima página, insira um nome para o projeto e especifique o local do projeto, se desejar.

  4. Escolha o botão Criar para criar o projeto.

    Após o Assistente de Aplicativo MFC ser exibido, use as seguintes opções:

    1. Escolha o Tipo de Aplicativo à esquerda. Em seguida, selecione Documento único e selecione Suporte à arquitetura de documento/exibição. Em Estilo do projeto, selecione Visual Studio e, na lista suspensa Estilo visual e cores, selecione Office 2007 (tema azul).

    2. No painel Suporte para Documento Composto, selecione Nenhum.

    3. Não faça nenhuma alteração no painel Propriedades do Modelo de Documento.

    4. 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.

    5. No painel Recursos Avançados, selecione as opções Controles ActiveX, Manifesto de Controle Comum e Painel de Navegação. Deixe todo o resto inalterado. A opção Painel de Navegação fará com que o assistente crie o painel à esquerda da janela com um CMFCShellTreeCtrl já inserido.

    6. Não faremos nenhuma alteração no painel Classes Geradas, portanto, clique em Concluir para criar o projeto do MFC.

Para criar um projeto do MFC no Visual Studio 2017 ou anterior

  1. Use o Assistente de Aplicativo MFC para criar um aplicativo MFC. Para executar o assistente, no menu Arquivo, selecione Novo e, em seguida, Projeto. A caixa de diálogo Novo Projeto será exibida.

  2. 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 do MFC. Digite um nome para o projeto, como MFCShellControls e clique em OK.

    Após o Assistente de Aplicativo MFC ser exibido, use as seguintes opções:

    1. No painel Tipo de Aplicativo, no Tipo de aplicativo, desmarque a opção Documentos com guias. Em seguida, selecione Documento único e selecione Suporte à arquitetura de documento/exibição. Em Estilo do projeto, selecione Visual Studio e, na lista suspensa Estilo visual e cores, selecione Office 2007 (tema azul).

    2. No painel Suporte para Documento Composto, selecione Nenhum.

    3. Não faça nenhuma alteração no painel Cadeias de Caracteres do Modelo de Documento.

    4. No painel Suporte ao Banco de Dados (Visual Studio 2015 e anteriores), selecione Nenhum porque o aplicativo não usa um banco de dados.

    5. 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.

    6. No painel Recursos Avançados, em Recursos avançados, selecione apenas Controles ActiveX e Manifesto de Controle Comum. Em Painéis de quadro 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 CMFCShellTreeCtrl já inserido.

    7. Não faremos nenhuma alteração no painel Classes Geradas, portanto, clique em Concluir para criar o projeto do MFC.

Verifique se o aplicativo foi criado com êxito compilando e executando-o. Para compilar o aplicativo, no menu Compilar, selecione Compilar Solução. Se o aplicativo for compilado com êxito, execute-o selecionando Iniciar depuração no menu Depurar.

O assistente cria automaticamente um aplicativo que tem uma barra de menus padrão, uma barra de ferramentas padrão, uma barra de status padrão e uma barra do Outlook à esquerda da janela, com uma exibição de Pastas e uma exibição de Calendário.

Para adicionar o controle de lista de shells à exibição do documento

  1. Nesta seção, você adicionará uma instância de CMFCShellListCtrl à exibição que o assistente criou. Abra o arquivo de cabeçalho da exibição clicando duas vezes em MFCShellControlsView.h no Gerenciador de Soluções.

    Localize a diretiva #pragma once próximo da parte superior do arquivo de cabeçalho. Logo abaixo dele, adicione este código para incluir o arquivo de cabeçalho para CMFCShellListCtrl:

    #include <afxShellListCtrl.h>
    

    Agora, adicione uma variável de membro do tipo CMFCShellListCtrl. Primeiro, localize o seguinte comentário no arquivo de cabeçalho:

    // Generated message map functions
    

    Logo acima desse comentário, adicione este código:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. O Assistente de Aplicativo MFC já criou um objeto CMFCShellTreeCtrl na classe CMainFrame, mas trata-se de um membro protegido. Acessaremos o objeto mais tarde, portanto, crie um acessador para ele agora. Abra o arquivo de cabeçalho Main.Frm.h clicando duas vezes nele no Gerenciador de Soluções. Localize o seguinte comentário:

    // Attributes
    

    Logo 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 do arquivo, adicione a seguinte definição de método:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Agora, atualizamos a classe CMFCShellControlsView para manipular a mensagem de janela WM_CREATE. Abra a janela Modo de Exibição de Classe e selecione a classe CMFCShellControlsView. 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 mensagem WM_CREATE. Na lista suspensa ao lado de WM_CREATE, selecione <Adicionar> OnCreate. O comando cria um manipulador de mensagens e atualiza automaticamente o mapa de mensagens do MFC.

    No método OnCreate, agora criaremos nosso objeto CMFCShellListCtrl. Localize a definição do método OnCreate 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;
    }
    
  4. Repita a etapa anterior para a mensagem WM_SIZE. Isso fará com que a exibição do aplicativo seja redesenhada sempre que um usuário alterar o tamanho da janela do aplicativo. Substitua a definição do método OnSize pelo 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);
    }
    
  5. A última etapa é conectar os objetos CMFCShellTreeCtrl e CMFCShellListCtrl usando o método CMFCShellTreeCtrl::SetRelatedList. Depois de chamar CMFCShellTreeCtrl::SetRelatedList, o CMFCShellListCtrl exibirá automaticamente o conteúdo do item selecionado no CMFCShellTreeCtrl. Conectamos os objetos no método OnActivateView, que é substituído de CView::OnActivateView.

    No arquivo de cabeçalho MFCShellControlsView.h, dentro da declaração de classe CMFCShellControlsView, adicione a seguinte declaração de método:

    protected:
    virtual void OnActivateView(BOOL bActivate,
        CView* pActivateView,
        CView* pDeactiveView);
    

    Em seguida, adicione a definição do 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 classe CMainFrame, devemos adicionar uma diretiva #include na parte superior do arquivo de origem MFCShellControlsView.cpp:

    #include "MainFrm.h"
    
  6. Verifique se o aplicativo foi criado com êxito compilando e executando-o. Para compilar o aplicativo, no menu Compilar, selecione Compilar Solução. Se o aplicativo for compilado com êxito, execute-o selecionando Iniciar depuração no menu Depurar.

    Agora, você deve ver os detalhes do item selecionado em CMFCShellTreeCtrl no painel de exibição. Quando você clicar em um nó no CMFCShellTreeCtrl, o CMFCShellListCtrl será atualizado automaticamente. Da mesma forma, se você clicar duas vezes em uma pasta no CMFCShellListCtrl, o CMFCShellTreeCtrl deverá 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 que se estivesse usando o Explorador de Arquivos real.

Próximas etapas

  • 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 em uma janela do Explorador, então remova esse painel.

  • O CMFCShellListCtrl dá suporte para exibir arquivos em modos diferentes, como Ícones Grandes, Ícones Pequenos, Lista e Detalhes. Atualize seu aplicativo para implementar essa funcionalidade. Dica: consulte os Exemplos do Visual C++.

Confira também

Passo a passo