Udostępnij za pośrednictwem


Wskazówki: używanie nowych formantów powłoki MFC

W tym przewodniku utworzysz aplikację przypominającą Eksplorator 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 będzie przechowywany 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 Programowanie aplikacji klasycznych w języku C++ jest zaznaczone. 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 Ustawienia ogólnego 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

  1. W menu głównym wybierz pozycję Plik>nowy>projekt, aby otworzyć okno dialogowe Tworzenie nowego projektu.

  2. W polu wyszukiwania u góry wpisz MFC, a następnie wybierz aplikację MFC z listy wyników.

  3. Kliknij przycisk Dalej. Na następnej stronie wprowadź nazwę projektu i w razie potrzeby określ lokalizację projektu.

  4. Wybierz przycisk Utwórz, aby utworzyć projekt.

    Po wyświetleniu Kreatora aplikacji MFC użyj następujących opcji:

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

    2. W okienku Obsługa dokumentów złożonych wybierz pozycję Brak.

    3. Nie wprowadzaj żadnych zmian w okienku Właściwości szablonu dokumentu.

    4. W okienku Funkcje interfejsu użytkownika upewnij się, że jest wybrana opcja Użyj paska menu i paska narzędzi . Pozostaw wszystkie inne opcje, ponieważ są.

    5. 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 CMFCShellTreeCtrl już osadzonym.

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

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

  2. 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 MFCShellControls i kliknij przycisk OK.

    Po wyświetleniu Kreatora aplikacji MFC użyj następujących opcji:

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

    2. W okienku Obsługa dokumentów złożonych wybierz pozycję Brak.

    3. Nie wprowadzaj żadnych zmian w okienku Ciągi szablonu dokumentu.

    4. W okienku Obsługa bazy danych (program Visual Studio 2015 i starsze) wybierz pozycję Brak , ponieważ aplikacja nie używa bazy danych.

    5. W okienku Funkcje interfejsu użytkownika upewnij się, że jest wybrana opcja Użyj paska menu i paska narzędzi . Pozostaw wszystkie inne opcje, ponieważ są.

    6. 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 utworzenie okienka po lewej stronie okna z już osadzonym kreatorem CMFCShellTreeCtrl .

    7. 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 skompilowany, uruchom aplikację, wybierając pozycję Rozpocznij debugowanie z menu Debugowanie.

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

  1. W tej sekcji dodasz wystąpienie CMFCShellListCtrl do widoku utworzonego przez kreatora. Otwórz plik nagłówka widoku, klikając dwukrotnie plik MFCShellControlsView.h w Eksplorator rozwiązań.

    Znajdź dyrektywę #pragma once w górnej części pliku nagłówka. Natychmiast pod nim dodaj ten kod, aby uwzględnić plik nagłówka dla CMFCShellListCtrlelementu :

    #include <afxShellListCtrl.h>
    

    Teraz dodaj zmienną składową typu CMFCShellListCtrl. Najpierw znajdź następujący komentarz w pliku nagłówka:

    // Generated message map functions
    

    Bezpośrednio nad tym komentarzem dodaj następujący kod:

    private:
    CMFCShellListCtrl m_wndList;
    
  2. Kreator aplikacji MFC utworzył CMFCShellTreeCtrl już obiekt w CMainFrame klasie, ale jest to chroniony element członkowski. Uzyskamy dostęp do obiektu później, więc utworzymy dla niego teraz metodę dostępu. Otwórz plik nagłówka MainFrm.h, klikając go dwukrotnie w Eksplorator rozwiązań. Znajdź następujący komentarz:

    // Attributes
    

    Natychmiast 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 Eksplorator rozwiązań. W dolnej części tego pliku dodaj następującą definicję metody:

    CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl()
    {
         return m_wndTree;
    }
    
  3. Teraz zaktualizujemy klasę do CMFCShellControlsView obsługi komunikatu WM_CREATE systemu Windows. 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 obok WM_CREATEpozycji wybierz pozycję <Dodaj> przyUtwórz. Polecenie tworzy program obsługi komunikatów dla nas i automatycznie aktualizuje mapę komunikatów MFC.

    W metodzie OnCreate utworzymy teraz nasz CMFCShellListCtrl obiekt. Znajdź definicję OnCreate metody 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;
    }
    
  4. 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ę OnSize metody 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);
    }
    
  5. Ostatnim krokiem jest połączenie CMFCShellTreeCtrl obiektów i CMFCShellListCtrl przy użyciu metody CMFCShellTreeCtrl::SetRelatedList . Po wywołaniu CMFCShellTreeCtrl::SetRelatedListmetody element CMFCShellListCtrl automatycznie wyświetli zawartość elementu wybranego w elemencie CMFCShellTreeCtrl. Łączymy obiekty w metodzie OnActivateView , która jest zastępowana z obiektu CView::OnActivateView.

    W pliku nagłówka CMFCShellControlsView MFCShellControlsView.h wewnątrz deklaracji klasy 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 CMainFrame klasy, musimy dodać dyrektywę #include w górnej części pliku źródłowego MFCShellControlsView.cpp:

    #include "MainFrm.h"
    
  6. 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 skompilowany, uruchom ją, wybierając pozycję Rozpocznij debugowanie z menu Debugowanie.

    Teraz powinny zostać wyświetlone szczegóły elementu wybranego w CMFCShellTreeCtrl okienku widoku. Po kliknięciu węzła w obiekcie CMFCShellTreeCtrlCMFCShellListCtrl element zostanie automatycznie zaktualizowany. Podobnie, jeśli dwukrotnie klikniesz folder w folderze CMFCShellListCtrl, CMFCShellTreeCtrl element powinien 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 Eksplorator plików.

Następne 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 CMFCShellListCtrl obsł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++.

Zobacz też

Przewodniki