Instruktaż: Przy użyciu nowych formantów powłoki MFC
W tym instruktażu utworzy podobny do Eksploratora plików aplikacji.Spowoduje utworzenie okna, który zawiera dwa okienka.Lewe okienko będzie zawierać CMFCShellTreeCtrl obiektu, który wyświetla pulpit w widoku hierarchicznym.Prawe okienko będzie zawierać CMFCShellListCtrl który pokazuje pliki w folderze, który wybrano w lewym okienku.
Wymagania wstępne
W tym instruktażu zakłada, że zdefiniowano Visual Studio , aby użyć Ogólne ustawienia rozwoju.Jeśli używasz ustawienie rozwoju różnych, niektóre Visual Studio systemu windows, których używamy w tym instruktażu mogą nie być wyświetlane domyślnie.
Aby utworzyć nową aplikację MFC przy użyciu Kreatora aplikacji MFC
Użyj Kreatora aplikacji MFC do tworzenia nowej aplikacji MFC.Aby uruchomić kreatora, z pliku menu wybierz Nowy, a następnie wybierz projektu.Nowy projekt zostanie wyświetlone okno dialogowe.
W Nowy projekt okno dialogowe rozwiń Visual C++ węzeł w typów projektów okienku i wybierz MFC.Następnie, w szablonów okienku wybierz Aplikacja MFC.Wpisz nazwę projektu, taką jak MFCShellControls i kliknij przycisk OK.Kreatora aplikacji MFC będą wyświetlane.
W Kreatora aplikacji MFC okno dialogowe, kliknij przycisk Dalej.Typ aplikacji zostanie wyświetlone okienko.
Na Typ aplikacji okienko, w Typ aplikacji, wyczyść dokumentów na kartach opcji.Następnie wybierz jednolitego dokumentu i wybierz /Widok dokumentu architektura obsługuje.W obszarze styl projektu, zaznacz Visual Studioi z styl wizualny i kolory listy rozwijanej listy wybierz pakietu Office 2007 (Blue theme).Pozostaw wszystkie inne opcje są one.Kliknij Dalej do wyświetlania Mieszanki Obsługa dokumentu okienka.
Na Mieszanki Obsługa dokumentu okienku wybierz Brak.Kliknij Dalej do wyświetlania Ciągów szablonu dokumentu okienka.
Nie należy wprowadzać żadnych zmian do Ciągów szablonu dokumentu okienka.Kliknij Dalej do wyświetlania Obsługa bazy danych okienka.
Na Obsługa bazy danych okienku wybierz Brak , ponieważ ta aplikacja nie używa bazy danych.Kliknij Dalej do wyświetlania Funkcje interfejsu użytkownika okienka.
Na Funkcje interfejsu użytkownika okienka, upewnij się, że używać menu i paska narzędzi jest zaznaczona opcja.Pozostaw wszystkie inne opcje są one.Kliknij Dalej do wyświetlania Zaawansowane funkcje okienka.
Na Zaawansowane funkcje okienko, w Zaawansowane funkcje, zaznacz tylko formantów ActiveX i Wspólnej kontroli Manifest.W obszarze Zaawansowane okienka ramki, zaznacz tylko okienko nawigacji opcji.Spowoduje to utworzenie w okienku po lewej stronie okna z CMFCShellTreeCtrl już osadzone.Kliknij Dalej do wyświetlania Klas generowanych okienka.
Nie chcemy żadnych zmian do Klas generowanych okienka.W związku z tym, kliknij Zakończ do tworzenia nowego projektu MFC.
Sprawdź, czy aplikacja została pomyślnie utworzona, budowania i uruchamiając go.Do tworzenia aplikacji, z budować menu wybierz Zbudować roztwór.Aplikacja tworzy się pomyślnie, uruchom aplikację wybierając Start Debugging z debugowania menu.
Kreator automatycznie tworzy aplikację, która posiada pasek menu standardowe, standardowy pasek narzędzi, pasek stanu standardowych i pasek Outlook po lewej stronie okna z Foldery widok i Kalendarz widok.
Aby dodać formant listy powłoki do widoku dokumentu
W tej sekcji zostaną dodane wystąpienie CMFCShellListCtrl , że utworzone przez kreatora.Otwórz plik nagłówka widok, klikając dwukrotnie MFCShellControlsView.h w Solution Explorer.
Zlokalizuj #pragma once dyrektywa u góry pliku nagłówka.Natychmiast underneath dodać ten kod, aby dołączyć plik nagłówkowy dla CMFCShellListCtrl:
#include <afxShellListCtrl.h>
Teraz Dodaj zmienną typu CMFCShellListCtrl.Po pierwsze zlokalizuj następujące komentarza w pliku nagłówka:
// Generated message map functions
Natychmiast dodać ten kod powyżej tego komentarza:
private: CMFCShellListCtrl m_wndList;
Kreatora aplikacji MFC już CMFCShellTreeCtrl obiekt w CMainFrame klasy, ale jest chroniony członek.Firma Microsoft będzie później dostęp tego obiektu.Dlatego teraz utworzyć akcesor operacji dla niego.Otwórz plik nagłówkowy MainFrm.h przez dwukrotne kliknięcie w Solution Explorer.Zlokalizuj następującą uwagę:
// Attributes
Natychmiast pod nim, należy dodać następującą deklarację metody:
public: CMFCShellTreeCtrl& GetShellTreeCtrl();
Następnie należy otworzyć plik źródłowy MainFrm.cpp przez dwukrotne kliknięcie w Solution Explorer.U dołu tego pliku należy dodać następującą definicję metody:
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }
Teraz możemy aktualizacji CMFCShellControlsView klasy obsługi WM_CREATE komunikat systemu windows.Otwórz plik nagłówkowy MFCShellControlsView.h i kliknij ten wiersz kodu:
class CMFCShellControlsView : public CView
W następnej Właściwości okna, kliknij wiadomości ikona.Przewiń w dół, aż znajdziesz WM_CREATE wiadomości.Z rozwijanej listy obok WM_CREATE, wybierz opcję <Add> OnCreate.Tworzy obsługi wiadomości dla nas i automatycznie aktualizuje mapy wiadomości MFC.
W OnCreate metody możemy teraz utworzyć naszych CMFCShellListCtrl obiektu.Znajdź OnCreate definicji metody w MFCShellControlsView.cpp pliku źródłowego i zastąpić jej wykonanie następującego kodu:
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; }
Powtórz poprzedni krok, ale dla WM_SIZE wiadomości.Spowoduje to widok aplikacji zostać odświeżone w każdym przypadku, gdy użytkownik zmieni rozmiar okna aplikacji.Zamień definicję OnSize metodę z następującego kodu:
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); }
Ostatnim krokiem jest podłączenie CMFCShellTreeCtrl i CMFCShellListCtrl obiektów za pomocą CMFCShellTreeCtrl::SetRelatedList metody.Po wywołaniu tej metody CMFCShellListCtrl automatycznie wyświetli zawartość elementu zaznaczonego w CMFCShellTreeCtrl.Zrobimy to OnActivateView metodę, która jest zastąpiona z CView::OnActivateView.
W pliku nagłówkowym MFCShellControlsView.h wewnątrz CMFCShellControlsView deklarację klasy, należy dodać następującą deklarację metody:
protected: virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
Następnie dodaj definicję tej metody w pliku źródłowym 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); }
Ponieważ wywołania metody z CMainFrame klasy, możemy dodać #include u góry pliku źródłowego MFCShellControlsView.cpp dyrektywę:
#include "MainFrm.h"
Sprawdź, czy aplikacja została pomyślnie utworzona, budowania i uruchamiając go.Do tworzenia aplikacji, z budować menu wybierz Zbudować roztwór.Jeśli aplikacja tworzy się pomyślnie, uruchom go przez zaznaczenie Start Debugging z debugowania menu.
Wyświetlone szczegóły dla elementu zaznaczonego w CMFCShellTreeCtrl w okienku Widok.Po kliknięciu węzła w CMFCShellTreeCtrl, CMFCShellListCtrl zostaną automatycznie zaktualizowane.Podobnie jeśli klikniesz dwukrotnie folder, w CMFCShellListCtrl, CMFCShellTreeCtrl powinny być automatycznie aktualizowane.
Kliknij prawym przyciskiem myszy dowolny element w drzewie lub formant listy.Uwaga uzyskać tego samego menu kontekstowego, jak w przypadku używania real Explorer pliku.
Następne kroki
Utworzone przez kreatora zarówno pasek Outlook Foldery okienko i Kalendarz okienka.To prawdopodobnie nie ma sensu ma Kalendarz okienka w oknie Eksploratora.Dlatego teraz usunąć okienka.
CMFCShellListCtrl Obsługuje przeglądanie plików w różnych trybach, takich jak Duże ikony, Małe ikony, listę, i Szczegóły.Aktualizacja aplikacji zaimplementować tę funkcję.Hint: see Visual C++ — przykłady.