Passo a passo: Usando os novos controles MFC Shell
Esta explicação passo a passo, você criará um aplicativo semelhante ao Gerenciador de arquivos.Você irá criar uma janela que contém dois painéis.O painel esquerdo contém uma CMFCShellTreeCtrl objeto exibe a área de trabalho em uma exibição hierárquica.O painel direito contém um CMFCShellListCtrl que mostra os arquivos na pasta selecionada no painel esquerdo.
Pré-requisitos
Esta explicação passo a passo assume que você configurou Visual Studio usar General Development Settings.Se você estiver usando uma configuração de desenvolvimento diferentes, algumas Visual Studio windows que usamos esta explicação passo a passo não podem ser exibidos por padrão.
Para criar um novo aplicativo do MFC usando o Assistente de aplicativo do MFC
Use o MFC Application Wizard para criar um novo aplicativo do MFC.Para executar o assistente a partir do arquivo menu Selecionar novoe selecione projeto.O Novo projeto caixa de diálogo será exibida.
No Novo projeto diálogo caixa, expanda o Visual C++ nó de tipos de projeto painel e selecione MFC.Em seguida, no modelos de , selecione Aplicativo MFC.Digite um nome para o projeto, como MFCShellControls e clique em OK.O MFC Application Wizard será exibida.
No MFC Application Wizard caixa de diálogo, clique em próximo.O Tipo de aplicativo painel será exibido.
Sobre o Tipo de aplicativo painel, em tipo de aplicativo, limpar o documentos com guias opção.Em seguida, selecione documento único e selecione suporte a arquitetura de exibição do documento.Em o estilo de projeto, selecione Visual Studioe o cores e estilo Visual suspensa lista, selecione Office 2007 (tema azul).Deixe todas as outras opções como estão.Clique em próximo para exibir o Suporte a documentos compostos painel.
Sobre o Suporte a documentos compostos , selecione Nenhum.Clique em próximo para exibir o Documento modelo seqüências painel.
Não faça quaisquer alterações para o Documento modelo seqüências painel.Clique em próximo para exibir o Suporte de banco de dados painel.
Sobre o Suporte de banco de dados painel, selecione Nenhum porque este aplicativo não usar um banco de dados.Clique em próximo para exibir o Recursos de Interface do usuário painel.
No Recursos de Interface do usuário painel, certifique-se de que o usar uma barra de menu e barra de ferramentas opção é selecionada.Deixe todas as outras opções como estão.Clique em próximo para exibir o Advanced Features painel.
No Recursos avançados painel, em recursos avançados, selecione apenas controles de ActiveX e Manifesto de controle comuns.Em avançados painéis de quadro, selecione apenas o painel de navegação opção.Isso fará com que o assistente criar o painel à esquerda da janela com um CMFCShellTreeCtrl já incorporados.Clique em próximo para exibir o Classes geradas painel.
Não vamos fazer alterações para o Classes geradas painel.Portanto, clique em Concluir para criar seu novo projeto MFC.
Verifique se o aplicativo foi criado com êxito, criando e executando-o.Criar o aplicativo da Build menu Selecionar Build Solution.Se o aplicativo foi criado com êxito, execute o aplicativo selecionando Start Debugging do Debug menu.
O assistente cria automaticamente um aplicativo que tenha uma barra de menu padrão, uma barra de ferramentas padrão, uma barra de status padrão e uma barra do Outlook à esquerda da janela com um pastas modo de exibição e um calendário exibir.
Para adicionar o controle de lista do shell para o modo de exibição de documento
Nesta seção, você irá adicionar uma instância de CMFCShellListCtrl no modo de exibição que o assistente criou.Abra o arquivo de cabeçalho de exibição clicando duas vezes em MFCShellControlsView.h na Solution Explorer.
Localize o #pragma once diretiva na parte superior do arquivo de cabeçalho.Logo abaixo ela 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 comentário a seguir no arquivo de cabeçalho:
// Generated message map functions
Imediatamente acima desse comentário adicione este código:
private: CMFCShellListCtrl m_wndList;
O MFC Application Wizard já criou um CMFCShellTreeCtrl de objeto na CMainFrame classe, mas é um membro protegido.Estamos irá acessar esse objeto posteriormente.Portanto, crie um acessador para ele agora.Abra o arquivo de cabeçalho MainFrm.h clicando duas vezes na Solution Explorer.Localize o comentário a seguir:
// Attributes
Imediatamente abaixo dela, adicione a seguinte declaração de método:
public: CMFCShellTreeCtrl& GetShellTreeCtrl();
Em seguida, abra o arquivo de origem MainFrm.cpp clicando duas vezes na Solution Explorer.Na parte inferior do arquivo, adicione a seguinte definição de método:
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }
Agora podemos atualizar o CMFCShellControlsView classe para manipular a WM_CREATE mensagem do windows.Abra o arquivo de cabeçalho MFCShellControlsView.h e clique nesta linha de código:
class CMFCShellControlsView : public CView
Em seguida, no Propriedades janela, clique no mensagens ícone.Role para baixo até encontrar o WM_CREATE mensagem.Na lista ao lado de suspensa WM_CREATE, selecione <Add> OnCreate.Isso cria um manipulador de mensagens para nós e atualiza automaticamente o mapa da mensagem MFC.
No OnCreate método agora criaremos nosso CMFCShellListCtrl objeto.Encontrar o OnCreate definição de método de MFCShellControlsView.cpp arquivo de origem e substituir sua implementação com o 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 o WM_SIZE mensagem.Isso fará com que a exibição de aplicativos seja redesenhado sempre que um usuário altera o tamanho da janela do aplicativo.Substituir 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); }
A última etapa é conectar o CMFCShellTreeCtrl e CMFCShellListCtrl objetos usando o CMFCShellTreeCtrl::SetRelatedList método.Depois de chamar esse método, o CMFCShellListCtrl exibirá automaticamente o conteúdo do item selecionado da CMFCShellTreeCtrl.Faremos isso OnActivateView método substituído de CView::OnActivateView.
No arquivo de cabeçalho MFCShellControlsView.h, dentro do 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 para este método no 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); }
Porque estamos chamando métodos de CMainFrame classe, é necessário adicionar um #include diretiva na parte superior do arquivo de origem MFCShellControlsView.cpp:
#include "MainFrm.h"
Verifique se o aplicativo foi criado com êxito, criando e executando-o.Criar o aplicativo da Build menu Selecionar Build Solution.Se o aplicativo foi criado com êxito, execute-o selecionando Start Debugging do Debug menu.
Agora você deve ver os detalhes do item selecionado da CMFCShellTreeCtrl no painel de exibição.Quando você clica em um nó de CMFCShellTreeCtrl, o CMFCShellListCtrl serão atualizados automaticamente.Da mesma forma, se clicar duas vezes em uma pasta de CMFCShellListCtrl, o CMFCShellTreeCtrl deve ser atualizado automaticamente.
À direita, clique em qualquer item no controle de árvore ou no controle de lista.Observe que você obtenha o mesmo menu de contexto como se estivesse usando o Explorador de arquivo real.
Próximas etapas
O assistente criou uma barra do Outlook com ambos um pastas painel e um calendário painel.Provavelmente não faz sentido ter um calendário painel em uma janela do Explorer.Portanto, remova esse painel agora.
O CMFCShellListCtrl suporta a exibição de arquivos em diferentes modos, como Ícones grandes, Ícones pequenos, lista, e detalhes.Atualize seu aplicativo para implementar essa funcionalidade.Hint: see Exemplos do Visual C++.