Návod: Použití nových ovládacích prvků prostředí MFC
V tomto názorném postupu vytvoříte aplikaci, která se podobá Průzkumník souborů. Vytvoříte okno se dvěma podokny. Levé podokno bude obsahovat objekt CMFCShellTreeCtrl , který zobrazuje plochu v hierarchickém zobrazení. Pravé podokno bude obsahovat příkaz CMFCShellListCtrl , který zobrazuje soubory ve složce vybrané v levém podokně.
Požadavky
V sadě Visual Studio 2017 a novějších je podpora MFC volitelnou komponentou. Pokud ho chcete nainstalovat, otevřete Instalační program pro Visual Studio z windows nabídka Start. Vyhledejte verzi sady Visual Studio, kterou používáte, a zvolte tlačítko Upravit . Ujistěte se, že je zaškrtnutá dlaždice Vývoj desktopových aplikací pomocí jazyka C++ . V části Volitelné součásti zaškrtněte tlačítko Podpora mfc.
V tomto názorném postupu se předpokládá, že jste sadu Visual Studio nastavili tak, aby používala obecné vývojové Nastavení. Pokud používáte jiné nastavení vývoje, některá okna sady Visual Studio, která používáme v tomto názorném postupu, nemusí být ve výchozím nastavení zobrazena.
Vytvoření nové aplikace MFC pomocí Průvodce aplikací MFC
Tyto kroky se liší v závislosti na tom, jakou verzi sady Visual Studio používáte. Pokud chcete zobrazit dokumentaci pro upřednostňovanou verzi sady Visual Studio, použijte ovládací prvek selektoru verzí . Nachází se v horní části obsahu na této stránce.
Vytvoření projektu MFC v sadě Visual Studio
V hlavní nabídce zvolte Soubor>nový>projekt a otevřete dialogové okno Vytvořit nový projekt.
Do vyhledávacího pole v horní části zadejte MFC a v seznamu výsledků zvolte aplikaci MFC.
Klikněte na tlačítko Další. Na další stránce zadejte název projektu a v případě potřeby zadejte umístění projektu.
Zvolte tlačítko Vytvořit a vytvořte projekt.
Po zobrazení Průvodce aplikací MFC použijte následující možnosti:
Na levé straně zvolte Typ aplikace. Pak vyberte Jeden dokument a vyberte podporu architektury Document/View. V části Styl projektu vyberte Visual Studio a v rozevíracím seznamu Styl a barvy vizuálu vyberte Office 2007 (Modrý motiv).
V podokně Podpora složeného dokumentu vyberte Žádné.
Neprovádejte žádné změny v podokně Vlastnosti šablony dokumentu.
V podokně Funkce uživatelského rozhraní se ujistěte, že je vybraná možnost Použít řádek nabídek a panel nástrojů. Ponechte všechny ostatní možnosti tak, jak jsou.
V podokně Rozšířené funkce vyberte technologie ActiveX ovládací prvky, manifest běžného ovládacího prvku a možnost navigačního podokna. Vše ostatní nechte tak, jak je. Možnost Navigační podokno způsobí, že průvodce vytvoří podokno vlevo od okna s již vloženým podoknem
CMFCShellTreeCtrl
.V podokně Vygenerované třídy nebudeme provádět žádné změny, takže kliknutím na tlačítko Dokončit vytvořte nový projekt MFC.
Vytvoření projektu MFC v sadě Visual Studio 2017 nebo starší
Pomocí Průvodce aplikací MFC vytvořte novou aplikaci MFC. Průvodce spustíte tak , že v nabídce Soubor vyberete Nový a pak vyberete Projekt. Zobrazí se dialogové okno Nový projekt .
V dialogovém okně Nový projekt rozbalte uzel Visual C++ v podokně Typy projektů a vyberte MFC. Potom v podokně Šablony vyberte aplikaci MFC. Zadejte název projektu, například
MFCShellControls
a klikněte na tlačítko OK.Po zobrazení Průvodce aplikací MFC použijte následující možnosti:
V podokně Typ aplikace v části Typ aplikace zrušte zaškrtnutí políčka Dokumenty s kartami. Dále vyberte Jeden dokument a vyberte Podpora architektury Document/View. V části Styl projektu vyberte Visual Studio a v rozevíracím seznamu Styl a barvy vizuálu vyberte Office 2007 (Modrý motiv).
V podokně Podpora složeného dokumentu vyberte Žádné.
Neprovázejte žádné změny v podokně Řetězce šablony dokumentu.
V podokně Podpora databáze (Visual Studio 2015 a starší) vyberte Žádné, protože aplikace nepoužívá databázi.
V podokně Funkce uživatelského rozhraní se ujistěte, že je vybraná možnost Použít řádek nabídek a panel nástrojů. Ponechte všechny ostatní možnosti tak, jak jsou.
V podokně Rozšířené funkce v části Pokročilé funkce vyberte pouze technologie ActiveX ovládací prvky a manifest běžného ovládacího prvku. V části Podokna s rozšířenými rámečky vyberte pouze možnost navigačního podokna . Průvodce vytvoří podokno vlevo od okna s již vloženým podoknem
CMFCShellTreeCtrl
.V podokně Vygenerované třídy nebudeme provádět žádné změny, takže kliknutím na tlačítko Dokončit vytvořte nový projekt MFC.
Ověřte, že se aplikace úspěšně vytvořila, a to sestavením a spuštěním aplikace. Aplikaci sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. Pokud se aplikace úspěšně sestaví, spusťte aplikaci výběrem možnosti Spustit ladění z nabídky Ladění .
Průvodce automaticky vytvoří aplikaci se standardním řádkem nabídek, standardním panelem nástrojů, standardním stavovým řádkem a outlookovým panelem vlevo od okna se zobrazením Složky a zobrazením Kalendář .
Přidání ovládacího prvku seznam prostředí do zobrazení dokumentu
V této části přidáte instanci
CMFCShellListCtrl
do zobrazení, které průvodce vytvořil. Otevřete soubor záhlaví zobrazení poklikáním mfcShellControlsView.h v Průzkumník řešení.Vyhledejte direktivu
#pragma once
v horní části souboru záhlaví. Přímo pod něj přidejte tento kód, který bude obsahovat soubor hlavičky proCMFCShellListCtrl
:#include <afxShellListCtrl.h>
Nyní přidejte členovou proměnnou typu
CMFCShellListCtrl
. Nejprve v souboru záhlaví vyhledejte následující komentář:// Generated message map functions
Bezprostředně nad tento komentář přidejte tento kód:
private: CMFCShellListCtrl m_wndList;
Průvodce aplikací MFC již vytvořil
CMFCShellTreeCtrl
objekt veCMainFrame
třídě, ale je to chráněný člen. K objektu se dostaneme později, takže pro něj teď vytvořte přístupový objekt. Otevřete soubor hlaviček MainFrm.h tak, že na něj poklikáním v Průzkumník řešení. Vyhledejte následující komentář:// Attributes
Bezprostředně pod něj přidejte následující deklaraci metody:
public: CMFCShellTreeCtrl& GetShellTreeCtrl();
Dále otevřete zdrojový soubor MainFrm.cpp tak, že na něj dvakrát kliknete v Průzkumník řešení. V dolní části tohoto souboru přidejte následující definici metody:
CMFCShellTreeCtrl& CMainFrame::GetShellTreeCtrl() { return m_wndTree; }
Teď aktualizujeme
CMFCShellControlsView
třídu tak, aby zpracovávalaWM_CREATE
zprávu windows. Otevřete okno Zobrazení třídy a vyberteCMFCShellControlsView
třídu. Klikněte pravým tlačítkem myši a vyberte Vlastnosti.Dále v Průvodci třídou klikněte na kartu Zprávy. Posuňte se dolů, dokud zprávu nenajdete
WM_CREATE
. V rozevíracím seznamu vedleWM_CREATE
položky Vyberte <Přidat> onCreate. Příkaz pro nás vytvoří obslužnou rutinu zprávy a automaticky aktualizuje mapu zpráv MFC.OnCreate
V metodě teď vytvoříme objektCMFCShellListCtrl
. Vyhledejte definiciOnCreate
metody ve zdrojovém souboru MFCShellControlsView.cpp a nahraďte její implementaci následujícím kódem: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; }
Opakujte předchozí krok, ale pro
WM_SIZE
zprávu. To způsobí, že zobrazení aplikací bude překresleno pokaždé, když uživatel změní velikost okna aplikace. Nahraďte definici metodyOnSize
následujícím kódem: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); }
Posledním krokem je připojení
CMFCShellTreeCtrl
objektů aCMFCShellListCtrl
objektů pomocí CMFCShellTreeCtrl::SetRelatedList metoda. Po voláníCMFCShellTreeCtrl::SetRelatedList
CMFCShellListCtrl
se automaticky zobrazí obsah položky vybrané v okněCMFCShellTreeCtrl
. Objekty vOnActivateView
metodě, které jsou přepsány z CView::OnActivateView.Do souboru hlavičky MFCShellControlsView.h přidejte uvnitř
CMFCShellControlsView
deklarace třídy následující deklaraci metody:protected: virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView);
Dále přidejte definici metody do zdrojového souboru 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); }
Protože voláme metody z
CMainFrame
třídy, musíme přidat#include
direktivu v horní části zdrojového souboru MFCShellControlsView.cpp:#include "MainFrm.h"
Ověřte, že se aplikace úspěšně vytvořila, a to sestavením a spuštěním aplikace. Aplikaci sestavíte tak, že v nabídce Sestavení vyberete Sestavit řešení. Pokud se aplikace úspěšně sestaví, spusťte ji výběrem možnosti Spustit ladění z nabídky Ladění .
Teď byste měli vidět podrobnosti o položce vybrané v
CMFCShellTreeCtrl
podokně zobrazení. Po kliknutí na uzel vCMFCShellTreeCtrl
CMFCShellListCtrl
uzlu se automaticky aktualizuje. Podobně platí, že pokud dvakrát kliknete na složku veCMFCShellListCtrl
složce ,CMFCShellTreeCtrl
měla by se automaticky aktualizovat.Klikněte pravým tlačítkem na libovolnou položku v ovládacím prvku stromu nebo v ovládacím prvku seznamu. Zobrazí se stejná místní nabídka, jako kdybyste používali skutečný Průzkumník souborů.
Další kroky
Průvodce vytvořil panel Outlooku s podoknem Složky i podoknem Kalendář . Pravděpodobně nemá smysl mít podokno Kalendář v okně Průzkumníka , takže toto podokno teď odeberte.
Podporuje
CMFCShellListCtrl
zobrazování souborů v různých režimech, jako jsou velké ikony, malé ikony, seznam a podrobnosti. Aktualizujte aplikaci, aby tuto funkci implementovali. Nápověda: Viz ukázky jazyka Visual C++.