Compartilhar via


Passo a passo: usando os novos controles de shell do 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 conterá um objeto CMFCShellTreeCtrl que exibe sua Área de Trabalho em uma exibição hierárquica. O painel direito conterá um CMFCShellListCtrl que mostra os arquivos na pasta selecionada no painel esquerdo.

Pré-requisitos

  • No Visual Studio 2017 e posterior, o suporte ao 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 De suporte do MFC .

  • Este passo a passo pressupõe que você configurou 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 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 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 pesquisa na parte superior, digite MFC e escolha o Aplicativo MFC na lista de resultados.

  3. Clique em Próximo. Na próxima página, insira um nome para o projeto e especifique o local do projeto, se desejado.

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

    Depois que o Assistente de Aplicativo MFC for exibido, use as seguintes opções:

    1. Escolha Tipo de Aplicativo à esquerda. Em seguida, selecione Documento único e selecione o suporte à arquitetura de Documento/Exibição. No estilo Projeto, selecione o Visual Studio e, na lista suspensa estilo visual e cores , selecione Office 2007 (tema azul).

    2. No painel Suporte a Documentos Compostos , 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 controles ActiveX, manifesto de controle comum e opção de 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 seu novo projeto MFC.

Para criar um projeto MFC no Visual Studio 2017 ou anterior

  1. Use o Assistente de Aplicativo MFC para criar um novo aplicativo MFC. Para executar o assistente, no menu Arquivo , selecione Novo e, em seguida, selecione Project. 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 MFC. Digite um nome para o projeto, como MFCShellControls e clique em OK.

    Depois que o Assistente de Aplicativo MFC for 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. No estilo Projeto, selecione o Visual Studio e, na lista suspensa estilo visual e cores , selecione Office 2007 (tema azul).

    2. No painel Suporte a Documentos Compostos , selecione Nenhum.

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

    4. No painel Suporte ao Banco de Dados (Visual Studio 2015 ou anterior), 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 seu novo projeto MFC.

Verifique se o aplicativo foi criado com êxito compilando e executando-o. Para criar o aplicativo, no menu Compilar , selecione Criar Solução. Se o aplicativo for construído com sucesso, execute o aplicativo 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 de exibição clicando duas vezes em MFCShellControlsView.h no Gerenciador de Soluções.

    Localize a #pragma once diretiva perto da parte superior do arquivo de cabeçalho. Imediatamente 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
    

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

    private:
    CMFCShellListCtrl m_wndList;
    
  2. O Assistente de Aplicativo MFC já criou um CMFCShellTreeCtrl objeto na CMainFrame classe, 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:

    // Attributes
    

    Imediatamente sob ele, 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;
    }
    
  3. Agora, atualizamos a CMFCShellControlsView classe para lidar com a mensagem do WM_CREATE Windows. Abra a janela Exibição de Classe e selecione a CMFCShellControlsView classe. 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_CREATE mensagem. Na lista suspensa ao lado de WM_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 objeto CMFCShellListCtrl. Localize a definição do OnCreate mé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;
    }
    
  4. Repita a etapa anterior, mas para a mensagem WM_SIZE. Isso fará com que o modo de exibição de aplicativos seja redesenhado sempre que um usuário alterar o tamanho da janela do aplicativo. Substitua a definição do OnSize método 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 do CView::OnActivateView.

    No arquivo de cabeçalho MFCShellControlsView.h, dentro da CMFCShellControlsView declaração de classe, 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 CMainFrame classe, devemos adicionar uma #include diretiva 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 criar o aplicativo, no menu Compilar , selecione Criar Solução. Se o aplicativo for construído com sucesso, execute-o selecionando Iniciar Depuração no menu Depurar.

    Agora você deve ver os detalhes do item selecionado no CMFCShellTreeCtrl painel de exibição. Quando você clicar em um nó no CMFCShellTreeCtrl, o CMFCShellListCtrl será atualizado automaticamente. Da mesma forma, se você der um duplo clique em uma pasta na 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 Explorer , então remova esse painel agora.

  • O CMFCShellListCtrl suporte à exibição de arquivos em modos diferentes, como Ícones Grandes, Ícones Pequenos, Lista e Detalhes. Atualize seu aplicativo para implementar essa funcionalidade. Dica: consulte exemplos do Visual C++.

Consulte também

Instruções passo a passo