Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przewodniku utworzysz aplikację podobną do Eksploratora plików. Utworzysz okno z dwoma okienkami. Lewe okienko będzie zawierać obiekt CMFCShellTreeCtrl , który wyświetla pulpit w widoku hierarchicznym. W okienku po prawej stronie zostanie umieszczony CMFCShellListCtrl, który pokazuje pliki w folderze wybranym w okienku po lewej stronie.
Wymagania wstępne
W programie Visual Studio 2017 lub nowszym obsługa MFC jest składnikiem opcjonalnym. Aby go zainstalować, otwórz Instalator programu Visual Studio z menu Start systemu Windows. Znajdź używaną wersję programu Visual Studio i wybierz przycisk Modyfikuj . Upewnij się, że kafelek Tworzenie aplikacji desktopowych w języku C++ jest zaznaczony. W obszarze Składniki opcjonalne sprawdź przycisk Obsługa MFC .
W tym przewodniku założono, że skonfigurowaliśmy program Visual Studio do korzystania z ustawień ogólnych programowania. Jeśli używasz innego ustawienia programowania, niektóre okna programu Visual Studio używane w tym przewodniku mogą nie być domyślnie wyświetlane.
Aby utworzyć nową aplikację MFC przy użyciu Kreatora aplikacji MFC
Te kroki różnią się w zależności od używanej wersji programu Visual Studio. Aby zapoznać się z dokumentacją preferowanej wersji programu Visual Studio, użyj kontrolki selektora wersji . Znajduje się on w górnej części spisu treści na tej stronie.
Aby utworzyć projekt MFC w programie Visual Studio
W menu głównym wybierz pozycję Plik>nowy>projekt, aby otworzyć okno dialogowe Tworzenie nowego projektu.
W polu wyszukiwania u góry wpisz MFC , a następnie wybierz aplikację MFC z listy wyników.
Kliknij przycisk Dalej. Na następnej stronie wprowadź nazwę projektu i w razie potrzeby określ lokalizację projektu.
Wybierz przycisk Utwórz, aby utworzyć projekt.
Po wyświetleniu Kreatora aplikacji MFC użyj następujących opcji:
Wybierz pozycję Typ aplikacji po lewej stronie. Następnie wybierz pozycję Pojedynczy dokument i wybierz pozycję Obsługa architektury dokumentu/widoku. W obszarze Styl projektu wybierz pozycję Visual Studio, a z listy rozwijanej Styl wizualizacji i kolory wybierz pozycję Office 2007 (Motyw niebieski).
W okienku Obsługa dokumentów złożonych wybierz pozycję Brak.
Nie wprowadzaj żadnych zmian w okienku Właściwości szablonu dokumentu .
W okienku Funkcje interfejsu użytkownika upewnij się, że jest wybrana opcja Użyj paska menu i paska narzędzi . Pozostaw wszystkie inne opcje bez zmian.
W okienku Funkcje zaawansowane wybierz opcję Kontrolki ActiveX, Wspólny manifest kontrolki i Okienko nawigacji . Pozostaw wszystko inne tak, jak jest. Opcja Okienko nawigacji spowoduje że kreator utworzy okienko po lewej stronie okna z
CMFCShellTreeCtrljuż osadzonym.Nie wprowadzimy żadnych zmian w okienku Wygenerowane klasy , więc kliknij przycisk Zakończ , aby utworzyć nowy projekt MFC.
Aby utworzyć projekt MFC w programie Visual Studio 2017 lub starszym
Użyj Kreatora aplikacji MFC , aby utworzyć nową aplikację MFC. Aby uruchomić kreatora, w menu Plik wybierz pozycję Nowy, a następnie wybierz pozycję Projekt. Zostanie wyświetlone okno dialogowe Nowy projekt .
W oknie dialogowym Nowy projekt rozwiń węzeł Visual C++ w okienku Typy projektów i wybierz pozycję MFC. Następnie w okienku Szablony wybierz pozycję Aplikacja MFC. Wpisz nazwę projektu, na przykład
MFCShellControlsi kliknij przycisk OK.Po wyświetleniu Kreatora aplikacji MFC użyj następujących opcji:
W okienku Typ aplikacji w obszarze Typ aplikacji wyczyść opcję Dokumenty z kartami . Następnie wybierz pozycję Pojedynczy dokument i wybierz pozycję Obsługa architektury dokumentu/widoku. W obszarze Styl projektu wybierz pozycję Visual Studio, a z listy rozwijanej Styl wizualizacji i kolory wybierz pozycję Office 2007 (Motyw niebieski).
W okienku Obsługa dokumentów złożonych wybierz pozycję Brak.
Nie wprowadzaj żadnych zmian w okienku Ciągi szablonu dokumentu .
W okienku Obsługa bazy danych (program Visual Studio 2015 i starsze) wybierz pozycję Brak , ponieważ aplikacja nie używa bazy danych.
W okienku Funkcje interfejsu użytkownika upewnij się, że jest wybrana opcja Użyj paska menu i paska narzędzi . Pozostaw wszystkie inne opcje bez zmian.
W okienku Funkcje zaawansowane w obszarze Funkcje zaawansowane wybierz tylko kontrolki ActiveX i wspólny manifest kontrolki. W obszarze Okienka ramki zaawansowane wybierz tylko opcję Okienko nawigacji . Spowoduje to, że kreator utworzy okienko po lewej stronie okna z już osadzonym
CMFCShellTreeCtrl.Nie wprowadzimy żadnych zmian w okienku Wygenerowane klasy , więc kliknij przycisk Zakończ , aby utworzyć nowy projekt MFC.
Sprawdź, czy aplikacja została utworzona pomyślnie, kompilując i uruchamiając ją. Aby skompilować aplikację, w menu Kompilacja wybierz pozycję Kompiluj rozwiązanie. Jeśli aplikacja zostanie pomyślnie skompilowana, uruchom ją, wybierając opcję Rozpocznij debugowanie z menu Debug.
Kreator automatycznie tworzy aplikację z standardowym paskiem menu, standardowym paskiem narzędzi, standardowym paskiem stanu i paskiem programu Outlook po lewej stronie okna z widokiem Foldery i widokiem Kalendarz .
Aby dodać kontrolkę listy powłoki do widoku dokumentu
W tej sekcji dodasz wystąpienie
CMFCShellListCtrldo widoku utworzonego przez kreatora. Otwórz plik nagłówka widoku, klikając dwukrotnie plik MFCShellControlsView.h w Eksploratorze rozwiązań.Znajdź dyrektywę
#pragma oncew górnej części pliku nagłówka. Natychmiast pod nim dodaj ten kod, aby dołączyć plik nagłówka dla elementuCMFCShellListCtrl.#include <afxShellListCtrl.h>Teraz dodaj zmienną składową typu
CMFCShellListCtrl. Najpierw znajdź następujący komentarz w pliku nagłówka:// Generated message map functionsBezpośrednio nad tym komentarzem dodaj następujący kod:
private: CMFCShellListCtrl m_wndList;Kreator aplikacji MFC utworzył
CMFCShellTreeCtrljuż obiekt wCMainFrameklasie, ale jest to chroniona zmienna członkowska. Uzyskamy dostęp do obiektu później, więc teraz utwórzmy dla niego akcesor. Otwórz plik nagłówka MainFrm.h, klikając go dwukrotnie w Eksploratorze rozwiązań. Znajdź następujący komentarz:// AttributesNatychmiast pod nim dodaj następującą deklarację metody:
public: CMFCShellTreeCtrl& GetShellTreeCtrl();Następnie otwórz plik źródłowy MainFrm.cpp, klikając go dwukrotnie w Eksploratorze rozwiązań. W dolnej części tego pliku dodaj następującą definicję metody:
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }Teraz zaktualizujemy klasę, aby obsługiwała komunikat systemu Windows
CMFCShellControlsViewWM_CREATE. Otwórz okno Widok klasy i wybierz klasęCMFCShellControlsView. Kliknij prawym przyciskiem myszy i wybierz polecenie Właściwości.Następnie w Kreatorze klas kliknij kartę Komunikaty . Przewiń w dół do momentu znalezienia komunikatu
WM_CREATE. Z listy rozwijanej obokWM_CREATEwybierz <Dodaj> onCreate. Polecenie tworzy program obsługi komunikatów dla nas i automatycznie aktualizuje mapę komunikatów MFC.W metodzie
OnCreateutworzymy teraz naszCMFCShellListCtrlobiekt. Znajdź definicjęOnCreatemetody w pliku źródłowym MFCShellControlsView.cpp i zastąp jego implementację następującym kodem: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 komunikatu
WM_SIZE. Spowoduje to ponowne rysowanie widoku aplikacji za każdym razem, gdy użytkownik zmieni rozmiar okna aplikacji. Zastąp definicjęOnSizemetody następującym kodem: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 połączenie
CMFCShellTreeCtrlobiektów iCMFCShellListCtrlprzy użyciu metody CMFCShellTreeCtrl::SetRelatedList . Po wywołaniu metodyCMFCShellTreeCtrl::SetRelatedList, elementCMFCShellListCtrlautomatycznie wyświetli zawartość elementu wybranego wCMFCShellTreeCtrl. Łączymy obiekty w metodzieOnActivateView, który został przesłonięty w metodzie CView::OnActivateView.W pliku nagłówkowym MFCShellControlsView.h, wewnątrz deklaracji klasy
CMFCShellControlsView, dodaj następującą deklarację metody:protected: virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);Następnie dodaj definicję metody do pliku źródłowego 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łujemy metody z
CMainFrameklasy, musimy dodać dyrektywę#includew górnej części pliku źródłowego MFCShellControlsView.cpp:#include "MainFrm.h"Sprawdź, czy aplikacja została utworzona pomyślnie, kompilując i uruchamiając ją. Aby skompilować aplikację, w menu Kompilacja wybierz pozycję Kompiluj rozwiązanie. Jeśli aplikacja zostanie pomyślnie skompilowana, uruchom ją, wybierając pozycję Rozpocznij debugowanie z menu Debug.
Teraz szczegóły elementu wybranego w
CMFCShellTreeCtrlpowinny się wyświetlić w okienku widoku. Po kliknięciu węzła wCMFCShellTreeCtrl,CMFCShellListCtrlzostanie automatycznie zaktualizowany. Podobnie, jeśli dwukrotnie klikniesz folder wCMFCShellListCtrl,CMFCShellTreeCtrlpowinien zostać automatycznie zaktualizowany.Kliknij prawym przyciskiem myszy dowolny element w kontrolce drzewa lub w kontrolce listy. Zostanie wyświetlone to samo menu kontekstowe, jak w przypadku korzystania z rzeczywistego Eksploratora plików.
Dalsze kroki
Kreator utworzył pasek programu Outlook z okienkiem Foldery i okienkiem Kalendarz . Prawdopodobnie nie ma sensu mieć okienka Kalendarz w oknie Eksploratora , więc usuń to okienko teraz.
Program
CMFCShellListCtrlobsługuje wyświetlanie plików w różnych trybach, takich jak duże ikony, małe ikony, lista i szczegóły. Zaktualizuj aplikację, aby zaimplementować tę funkcję. Wskazówka: zobacz Przykłady języka Visual C++.