Partilhar via


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

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

  2. Na caixa de pesquisa na parte superior, digite MFC e escolha MFC App na lista de resultados.

  3. Clique em Next. Na página seguinte, 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 de o MFC Application Wizard ser exibido, use as seguintes opções:

    1. 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).

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

    3. Não faça alterações 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 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 CMFCShellTreeCtrl já incorporado.

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

  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 de o MFC Application Wizard ser exibido, use as seguintes opções:

    1. 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).

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

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

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

    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 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 CMFCShellTreeCtrl já incorporado.

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

  1. Nesta secção, adicionarás uma instância de CMFCShellListCtrl ao 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 once diretiva perto da parte superior do arquivo de cabeçalho. Imediatamente abaixo adicione este código para incluir o arquivo de cabeçalho para CMFCShellListCtrl:

    #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 functions
    

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

    private:
    CMFCShellListCtrl m_wndList;
    
  2. O MFC Application Wizard 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 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;
    }
    
  3. Agora atualizamos a CMFCShellControlsView classe para lidar com a mensagem do WM_CREATE Windows. Abra a janela Class View 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 pendente 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. Encontre a definição de 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 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 o OnSize mé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);
    }
    
  5. A última etapa é conectar os CMFCShellTreeCtrl objetos e CMFCShellListCtrl usando o método CMFCShellTreeCtrl::SetRelatedList . Depois de chamar o CMFCShellTreeCtrl::SetRelatedList, o CMFCShellListCtrl exibirá automaticamente o conteúdo do item selecionado no CMFCShellTreeCtrl. Conectamos os OnActivateView objetos no método, que é sobrescrito por CView::OnActivateView.

    No arquivo de cabeçalho MFCShellControlsView.h, dentro da declaração de CMFCShellControlsView 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 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 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 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 CMFCShellTreeCtrl painel de exibição. Quando você clica 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 deve 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 CMFCShellListCtrl suporta 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++.

Ver também

Passo a passo