Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento názorný postup ukazuje, jak upravit existující aplikaci MFC tak, aby používala uživatelské rozhraní pásu karet. Visual Studio podporuje pás karet Office 2007 i pás karet s Windows 7 Scenic. Další informace o uživatelském rozhraní pásu karet najdete v tématu Pásy karet.
Tento návod upraví klasickou ukázku knihovny MFC Scribble 1.0, která umožňuje použít myš k vytvoření čarových kreseb. Tato část návodu ukazuje, jak upravit ukázku Scribble tak, aby zobrazovala pás karet. Část 2 přidá na panel pásu karet další tlačítka.
Požadavky
Ukázkový program Scribble 1.0 MFC Nápovědu k převodu na Visual Studio 2017 nebo novější najdete v průvodci portováním: MFC Scribble.
Oddíly
Tato část návodu obsahuje následující části:
Nahrazení základních tříd
Chcete-li převést aplikaci, která podporuje nabídku, na aplikaci, která podporuje pás nástrojů, musíte odvozovat aplikaci, okno aplikace a třídy nástrojového panelu z aktualizovaných základních tříd. (Doporučujeme neupravovat původní ukázku Scribble. Místo toho vyčistěte projekt Scribble, zkopírujte ho do jiného adresáře a pak upravte kopii.)
Nahrazení základních tříd v aplikaci Scribble
V scribble.cpp ověřte, že
CScribbleApp::InitInstancezahrnuje volání AfxOleInit.Do souboru pch.h (stdafx.h ve verzích Visual Studio 2017 a starších) přidejte následující kód:
#include <afxcontrolbars.h>V souboru scribble.h upravte definici třídy
CScribbleApptak, aby byla odvozena z CWinAppEx – třída.class CScribbleApp: public CWinAppExScribble 1.0 byl napsán, když aplikace systému Windows použily inicializační (.ini) soubor k uložení dat předvoleb uživatele. Místo inicializačního souboru upravte Scribble tak, aby se uživatelské předvolby ukládaly do registru. Chcete-li nastavit klíč registru a základ, zadejte následující kód v
CScribbleApp::InitInstancepoLoadStdProfileSettings()pokynu.SetRegistryKey(_T("MFCNext\\Samples\\Scribble2")); SetRegistryBase(_T("Settings"));Hlavní rámec pro více aplikací rozhraní dokumentů (MDI) již není odvozen z
CMDIFrameWndtřídy. Místo toho je odvozena z CMDIFrameWndEx třídy.Ve souborech mainfrm.h a mainfrm.cpp nahraďte všechny odkazy na
CMDIFrameWndvšemi odkazy naCMDIFrameWndEx.V souboru childfrm.h a childfrm.cpp nahraďte
CMDIChildWndpříponouCMDIChildWndEx.V „childfrm“ V souboru nahraďte
CSplitterWndsCSplitterWndEx.Upravte panely nástrojů a stavové řádky tak, aby používaly nové třídy MFC.
V souboru mainfrm.h:
Nahraďte
CToolBarsCMFCToolBar.Nahraďte
CStatusBarsCMFCStatusBar.
V souboru mainfrm.cpp:
Nahradit
m_wndToolBar.SetBarStylem_wndToolBar.SetPaneStyleNahradit
m_wndToolBar.GetBarStylem_wndToolBar.GetPaneStyleNahradit
DockControlBar(&m_wndToolBar)DockPane(&m_wndToolBar)
V souboru ipframe.cpp zakomentujte následující tři řádky kódu.
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); pWndFrame->EnableDocking(CBRS_ALIGN_ANY); pWndFrame->DockPane(&m_wndToolBar);Uložte změny a pak sestavte a spusťte aplikaci.
Přidání rastrových obrázků do projektu
Další čtyři kroky tohoto návodu vyžadují bitmapové prostředky. Vhodné rastrové obrázky můžete získat různými způsoby:
Pomocí Editorů prostředků můžete vytvořit vlastní rastrové obrázky. Nebo použijte editory zdrojů k sestavení rastrových obrázků z obrázků formátu PNG (.png), které jsou součástí sady Visual Studio a lze je stáhnout z knihovny obrázků sady Visual Studio.
Uživatelské rozhraní Ribbonu však vyžaduje, aby určité rastrové obrázky podporovaly průhlednost. Průhledné rastrové obrázky používají 32bitové pixely, kde 24 bitů určuje červenou, zelenou a modrou část barvy a 8 bitů definuje alfa kanál , který určuje průhlednost barvy. Aktuální editory prostředků můžou zobrazit, ale ne upravovat rastrové obrázky s 32bitovými pixely. V důsledku toho použijte externí editor obrázků místo editorů prostředků k manipulaci s průhlednými rastrovými obrázky.
Zkopírujte příslušný soubor zdroje z jiné aplikace do projektu a potom z daného souboru naimportujte rastrové obrázky.
Tento názorný postup kopíruje soubory prostředků z příkladu vytvořeného v názorném průvodci: Vytvoření aplikace pásu karet pomocí knihovny MFC.
Přidání rastrových obrázků do projektu
Pomocí Průzkumníka souborů zkopírujte následující .bmp soubory z adresáře zdrojů (
res) příkladu Pásu karet do adresáře zdrojů (res) projektu Scribble.Zkopírujte main.bmp do projektu Scribble.
Zkopírujte filesmall.bmp a filelarge.bmp do projektu Scribble.
Vytvořte nové kopie souborů filelarge.bmp a filesmall.bmp, ale uložte je v ukázkovém souboru Pásu karet. Přejmenujte kopie homesmall.bmp a homelarge.bmp a pak je přesuňte do projektu Scribble.
Vytvořte kopii souboru toolbar.bmp, ale uložte kopii v příkladu Pásu karet. Přejmenujte kopii panelicons.bmp a pak ji přesuňte do projektu Scribble.
Naimportujte rastrový obrázek pro aplikaci MFC. Ve zobrazení prostředků dvojklikněte na uzel scribble.rc, dvojklikněte na uzel Bitmapa a potom klepněte na Přidat prostředek. V dialogovém okně, které se zobrazí, klepněte na tlačítko Importovat. Přejděte do
resadresáře, vyberte main.bmp soubor a klikněte na Otevřít.Rastrový obrázek main.bmp obsahuje obrázek 26x26. Změňte ID rastrového obrázku na
IDB_RIBBON_MAIN.Naimportujte rastrové obrázky pro nabídku souboru, která je připojena k tlačítku Aplikace .
- Importujte soubor filesmall.bmp, který obsahuje jedenáct obrázků 16 × 16 (16 × 176). Změňte ID rastrového obrázku na
IDB_RIBBON_FILESMALL.
Poznámka:
Protože potřebujeme pouze prvních osm obrázků 16x16 (16x128), můžete volitelně oříznout pravou šířku tohoto rastrového obrázku od 176 do 128.
- Importujte filelarge.bmp, který obsahuje devět obrázků 32x32 (32x288). Změňte ID rastrového obrázku na
IDB_RIBBON_FILELARGE.
- Importujte soubor filesmall.bmp, který obsahuje jedenáct obrázků 16 × 16 (16 × 176). Změňte ID rastrového obrázku na
Naimportujte rastrové obrázky pro kategorie a panely pásu karet. Každá karta na panelu nástrojů je kategorie a skládá se z textového popisku a volitelného obrázku.
Importujte bitmapu homesmall.bmp, která obsahuje jedenáct 16x16 obrázků pro malé rastrové obrázky tlačítek. Změňte ID rastrového obrázku na
IDB_RIBBON_HOMESMALL.Importujte rastrový obrázek homelarge.bmp, který obsahuje devět obrázků o velikosti 32x32 pro velká tlačítka. Změňte ID rastrového obrázku na
IDB_RIBBON_HOMELARGE.
Importovat rastrové obrázky pro zmenšené panely pásu karet. Tyto rastrové obrázky nebo ikony panelů se použijí po operaci změny velikosti, pokud je pás karet příliš malý, aby se zobrazil celý panel.
- Naimportujte panelicons.bmp rastrový obrázek, který obsahuje osm obrázků 16x16. V okně Vlastnosti editoru bitmap upravte šířku rastrového obrázku na 64 (16x64). Změňte ID rastrového obrázku na
IDB_PANEL_ICONS.
Poznámka:
Protože potřebujeme jenom první čtyři obrázky 16x16 (16x64), můžete volitelně oříznout šířku pravé strany tohoto rastrového obrázku od 128 do 64.
- Naimportujte panelicons.bmp rastrový obrázek, který obsahuje osm obrázků 16x16. V okně Vlastnosti editoru bitmap upravte šířku rastrového obrázku na 64 (16x64). Změňte ID rastrového obrázku na
Přidání zdroje pásu karet do projektu
Když převedete aplikaci, která používá nabídky na aplikaci, která používá pás karet, nemusíte stávající nabídky odebírat ani zakazovat. Stačí vytvořit pás karet, přidat tlačítka pásu karet a pak přidružit nová tlačítka k existujícím položkám nabídky. I když se nabídky už nezobrazují, zprávy z panelu pásu karet jsou stále směrovány přes tyto nabídky a klávesové zkratky nabídek stále fungují.
Pás karet se skládá z tlačítka Aplikace, který je velkém tlačítkem na levé horní straně pásu karet, a jedné nebo více záložek kategorií. Každá karta kategorie obsahuje jeden nebo více panelů, které fungují jako kontejnery pro tlačítka a ovládací prvky na pásu karet. Následující postup ukazuje, jak vytvořit zdroj pásu karet a poté přizpůsobit tlačítko Aplikace.
Přidání prostředku pásu karet do projektu
Pokud je projekt Scribble vybraný v Průzkumníku řešení, v nabídce Projekt klikněte na Přidat zdroj.
V dialogovém okně Přidat prostředek vyberte Pás karet a potom klikněte na tlačítko Nový.
Visual Studio vytvoří prostředek pásu karet a otevře ho v návrhovém zobrazení. ID prostředků pásu karet je
IDR_RIBBON1, které se zobrazí v Zobrazení prostředků. Pás karet obsahuje jednu kategorii a jeden panel.Tlačítko Aplikace můžete přizpůsobit úpravou jeho vlastností. ID zpráv používaná v tomto kódu jsou již definována v nabídce pro Scribble 1.0.
V návrhovém zobrazení kliknutím na tlačítko Aplikace zobrazte jeho vlastnosti. Změňte hodnoty vlastností následujícím způsobem: Obrázek na
IDB_RIBBON_MAIN, Zobrazit výzvuFile, Klíče naf, Velké obrázky naIDB_RIBBON_FILELARGEa Malé obrázky naIDB_RIBBON_FILESMALL.Následující úpravy vytvoří nabídku, která se zobrazí, když uživatel klikne na tlačítko Aplikace . Kliknutím na tři tečky (...) vedle hlavní položky otevřete Editor položek.
S vybraným typem položkytlačítko klikněte na Přidat pro přidání tlačítka. Změňte titulek na
&New, ID naID_FILE_NEW, Obrázek na0, Obrázek velký na0.Kliknutím na Přidat přidáte tlačítko. Změňte titulek na
&Save, ID naID_FILE_SAVE, obrázek na2a obrázek velký na2.Kliknutím na Přidat přidáte tlačítko. Změňte titulek na
Save &As, ID naID_FILE_SAVE_AS, obrázek na3a obrázek velký na3.Kliknutím na Přidat přidáte tlačítko. Změňte titulek na
&Print, ID naID_FILE_PRINT, obrázek na4a obrázek velký na4.Změňte typ položky na Oddělovač a potom klikněte na Přidat.
Změňte typ položky na tlačítko. Kliknutím na Přidat přidáte páté tlačítko. Změňte titulek na
&Close, ID naID_FILE_CLOSE, obrázek na5a obrázek velký na5.
Následující úpravy vytvoří podnabídku pod tlačítkem Tisk , které jste vytvořili v předchozím kroku.
Klikněte na tlačítko Tisk , změňte typ položky na Popisek a potom klikněte na vložit. Změnit titulek na
Preview and print the document.Klikněte na tlačítko Tisk , změňte typ položky na tlačítko a klikněte na Vložit. Změňte titulek na
&Print, ID naID_FILE_PRINT, obrázek na4a obrázek velký na4.Klikněte na tlačítko Tisk a potom klikněte na Vložit a přidejte tlačítko. Změňte titulek na
&Quick Print, ID naID_FILE_PRINT_DIRECT, obrázek na7a obrázek velký na7.Klepněte na tlačítko Tisk, a potom na Vložit pro přidání dalšího tlačítka. Změňte titulek na
Print Pre&view, ID naID_FILE_PRINT_PREVIEW, obrázek na6a obrázek velký na6.Změnili jste hlavní položky. Kliknutím na tlačítko Zavřít ukončete Editor položek.
Následující úprava vytvoří tlačítko ukončení, které se zobrazí v dolní části nabídky tlačítko Aplikace .
V Průzkumníku řešení zvolte kartu Zobrazení prostředků.
V okně Vlastnosti kliknutím na tři tečky (...) vedle tlačítka otevřete Editor položek.
S vybraným typem položkytlačítko klikněte na Přidat pro přidání tlačítka. Změnit titulek na
E&xit, ID naID_APP_EXIT, Obrázek na8.Změnili jste tlačítka. Kliknutím na tlačítko Zavřít ukončete Editor položek.
Vytvoření instance panelu pásu karet
Následující kroky ukazují, jak vytvořit instanci panelu karet při spuštění aplikace. Pokud chcete do aplikace přidat pás karet, deklarujte jej v souboru mainfrm.h. Potom v souboru mainfrm.cpp napište kód pro načtení prostředku pásu karet.
Vytvoření instance panelu pásu karet
V souboru mainfrm.h přidejte datový člen do chráněné části
CMainFrametřídy definice hlavního rámce. Tento člen je určen pro pás karet.// Ribbon bar for the application CMFCRibbonBar m_wndRibbonBar;Do souboru mainfrm.cpp přidejte následující kód před konečné
returnprohlášení před ukončením funkceCMainFrame::OnCreate. Vytvoří instanci panelu pásu karet.// Create the ribbon bar if (!m_wndRibbonBar.Create(this)) { return -1; //Failed to create ribbon bar } m_wndRibbonBar.LoadFromResource(IDR_RIBBON1);
Přizpůsobení prostředku pásu karet
Teď, když jste vytvořili tlačítko Aplikace , můžete na pás karet přidat prvky.
Poznámka:
Tento průvodce používá stejnou ikonu panelu pro všechny panely. K zobrazení dalších ikon ale můžete použít jiné indexy seznamu obrázků.
Přidání kategorie Domů a panelu Úpravy
Program Scribble vyžaduje pouze jednu kategorii. V návrhovém zobrazení na panelu nástrojů poklikáním na kategorii přidejte jednu a zobrazte její vlastnosti. Změňte hodnoty vlastností takto: Titulek na
&Home, Velké obrázky naIDB_RIBBON_HOMELARGE, Malé obrázky naIDB_RIBBON_HOMESMALL.Každá kategorie pásu karet je uspořádaná do pojmenovaných panelů. Každý panel obsahuje sadu ovládacích prvků, které dokončí související operace. Tato kategorie má jeden panel. Klepněte na panel a potom změňte titulek na
Edit.Na panel Upravit přidejte tlačítko zodpovědné za vymazání obsahu dokumentu. ID zprávy pro toto tlačítko již bylo definováno v
IDR_SCRIBBTYPEprostředku nabídky. ZadejteClear Alljako text tlačítka a index rastrového obrázku, který tlačítko ozdobí. Otevřete panel nástrojů a přetáhněte tlačítko na panel Upravit . Klikněte na tlačítko a potom změňte titulek naClear All, ID naID_EDIT_CLEAR_ALL, Index obrázku na0, Velký index obrázku na0.Uložte změny a pak sestavte a spusťte aplikaci. Aplikace Scribble by měla být zobrazena; měla by mít pás karet v horní části okna místo řádku nabídek. Pás karet by měl mít jednu kategorii, Domů, a Domů by měl mít jeden panel, Upravit. Tlačítka pásu karet, která jste přidali, by měla být spojena s existujícími obslužnými rutinami událostí a tlačítka Otevřít, Zavřít, Uložit, Tisk a Vymazat vše by měla fungovat podle očekávání.
Nastavení vzhledu aplikace
Správce vizuálů je globální objekt, který řídí všechny výkresy pro aplikaci. Vzhledem k tomu, že původní aplikace Scribble používá styl uživatelského rozhraní Office 2000, může aplikace vypadat staromódně. Aplikaci můžete obnovit tak, aby používala správce vizuálů Office 2007, aby se podobala aplikaci Office 2007.
Nastavení vzhledu aplikace
CMainFrame::OnCreateDo funkce zadejte před příkaz následující kódreturn 0;, který změní výchozího správce a styl vizuálu.// Set the default manager to Office 2007 CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);Uložte změny a pak sestavte a spusťte aplikaci. Uživatelské rozhraní aplikace by mělo vypadat podobně jako uživatelské rozhraní Office 2007.
Další kroky
Upravili jste klasický příklad Scribble MFC 1.0, aby používal Návrhář pásu karet. Teď přejděte na část 2.