Sdílet prostřednictvím


Návod: Aktualizace aplikace MFC Scribble (část 1)

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 zobrazoval pás karet. Část 2 přidá na panel pásu karet další tlačítka.

Požadavky

Ukázka knihovny MFC Scribble 1.0 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 karet, musíte odvodit aplikaci, okno rámečku a třídy panelu nástrojů 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

  1. V souboru scribble.cpp ověřte, že CScribbleApp::InitInstance obsahuje volání AfxOleInit.

  2. Do souboru pch.h (stdafx.h v sadě Visual Studio 2017 a starších) přidejte následující kód:

    #include <afxcontrolbars.h>
    
  3. V souboru scribble.h upravte definici třídy CScribbleApp tak, aby byla odvozena z CWinAppEx – třída.

    class CScribbleApp: public CWinAppEx
    
  4. Scribble 1.0 byl napsán, když aplikace systému Windows použily inicializační soubor (.ini) 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 za CScribbleApp::InitInstanceLoadStdProfileSettings() příkaz.

    SetRegistryKey(_T("MFCNext\\Samples\\Scribble2"));
    SetRegistryBase(_T("Settings"));
    
  5. Hlavní rámec pro více aplikací rozhraní dokumentů (MDI) již není odvozen z CMDIFrameWnd třídy. Místo toho je odvozena z CMDIFrameWndEx třídy.

    V souborech mainfrm.h a mainfrm.cpp nahraďte všechny odkazy na CMDIFrameWndCMDIFrameWndEx.

  6. V souborech childfrm.h a childfrm.cpp nahraďte CMDIChildWnd příponou CMDIChildWndEx.

    V childfrm. h soubor, nahraďte CSplitterWnd ho .CSplitterWndEx

  7. Upravte panely nástrojů a stavové řádky tak, aby používaly nové třídy MFC.

    V souboru mainfrm.h:

    1. Nahraďte CToolBarCMFCToolBar.

    2. Nahraďte CStatusBarCMFCStatusBar.

  8. V souboru mainfrm.cpp:

    1. Nahradit m_wndToolBar.SetBarStyle čím m_wndToolBar.SetPaneStyle

    2. Nahradit m_wndToolBar.GetBarStyle čím m_wndToolBar.GetPaneStyle

    3. Nahradit DockControlBar(&m_wndToolBar) čím DockPane(&m_wndToolBar)

  9. V souboru ipframe.cpp okomentujte následující tři řádky kódu.

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->DockPane(&m_wndToolBar);
    
  10. 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í rastrové prostředky. Vhodné rastrové obrázky můžete získat různými způsoby:

  • Pomocí Editorů prostředků můžete vymyslet vlastní rastrové obrázky. Nebo pomocí editorů prostředků sestavte rastrové obrázky z přenosných obrázků síťové grafiky (.png), které jsou součástí sady Visual Studio, a lze je stáhnout z knihovny imagí sady Visual Studio.

    Uživatelské rozhraní pásu karet však vyžaduje, aby určité rastrové obrázky podporovaly průhledné obrázky. 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ávodu: Vytvoření aplikace pásu karet pomocí knihovny MFC.

Přidání rastrových obrázků do projektu

  1. Pomocí Průzkumník souborů zkopírujte následující soubory .bmp z adresáře prostředků (res) příkladu pásu karet do adresáře zdrojů (res) projektu Scribble:

    1. Zkopírujte main.bmp do projektu Scribble.

    2. Zkopírujte souborymall.bmp a filelarge.bmp do projektu Scribble.

    3. Vytvořte nové kopie souborů filelarge.bmp a filesmall.bmp, ale uložte kopie v příkladu pásu karet. Přejmenujte kopie homesmall.bmp a homelarge.bmp a pak přesuňte kopie do projektu Scribble.

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

  2. Naimportujte rastrový obrázek pro aplikaci MFC. V zobrazení prostředků poklikejte na uzel scribble.rc, poklikejte na bitmapovýuzel a potom klepněte na tlačítko Přidat prostředek. V dialogovém okně, které se zobrazí, klepněte na tlačítko Importovat. Přejděte do res adresáře, vyberte soubor main.bmp a klepněte na tlačítko Otevřít.

    Bitmapa main.bmp obsahuje obrázek 26x26. Změňte ID rastrového obrázku na IDB_RIBBON_MAIN.

  3. Naimportujte rastrové obrázky pro nabídku souboru, která je připojena k tlačítku Aplikace .

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

    1. Importujte souborlarge.bmp, který obsahuje devět obrázků 32x32 (32x288). Změňte ID rastrového obrázku na IDB_RIBBON_FILELARGE.
  4. Naimportujte rastrové obrázky pro kategorie a panely pásu karet. Každá karta na pásu karet je kategorie a skládá se z textového popisku a volitelného obrázku.

    1. Importujte rastrový obrázek homesmall.bmp, který obsahuje jedenáct obrázků 16x16 pro malé tlačítko rastrové obrázky. Změňte ID rastrového obrázku na IDB_RIBBON_HOMESMALL.

    2. Importujte rastrový obrázek homelarge.bmp, který obsahuje devět obrázků 32 × 322 pro velké tlačítko rastrové obrázky. Změňte ID rastrového obrázku na IDB_RIBBON_HOMELARGE.

  5. Umožňuje importovat rastrové obrázky pro panely pásu karet se změněnou velikostí. 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.

    1. Importujte rastrový obrázek panelicons.bmp, 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.

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 prostředek pásu 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 se přes nabídky a klávesové zkratky nabídek budou dál fungovat.

Pás karet se skládá z tlačítka Aplikace , což je velké tlačítko na levé horní straně pásu karet a jednu nebo více karet kategorií. Každá karta kategorie obsahuje jeden nebo více panelů, které fungují jako kontejnery pro tlačítka a ovládací prvky pásu karet. Následující postup ukazuje, jak vytvořit prostředek pásu karet a pak přizpůsobit tlačítko Aplikace .

Přidání prostředku pásu karet do projektu

  1. Pokud je projekt Scribble vybraný v Průzkumník řešení, v nabídce Projekt klikněte na Přidat zdroj.

  2. V dialogovém okně Přidat prostředek vyberte pás karet a potom klepněte na tlačítko Nový.

    Visual Studio vytvoří prostředek pásu karet a otevře ho v návrhovém zobrazení. ID prostředku pásu karet je IDR_RIBBON1, který se zobrazí v zobrazení zdrojů. Pás karet obsahuje jednu kategorii a jeden panel.

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

  4. 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 , Zobrazit výzvu File , Klíče na f, Velké obrázky na IDB_RIBBON_FILELARGEa Malé obrázky na IDB_RIBBON_FILESMALL. IDB_RIBBON_MAIN

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

    1. Pokud je vybráno tlačítko Typ položky, klikněte na přidat tlačítko. Změňte titulek na &New, ID na ID_FILE_NEW, Obrázek na 0, Obrázek velký na 0.

    2. Kliknutím na Přidat přidáte tlačítko. Změňte titulek na &Save, ID na ID_FILE_SAVE, obrázek na 2a obrázek velký na 2.

    3. Kliknutím na Přidat přidáte tlačítko. Změňte titulek na Save &As, ID na ID_FILE_SAVE_AS, obrázek na 3a obrázek velký na 3.

    4. Kliknutím na Přidat přidáte tlačítko. Změňte titulek na &Print, ID na ID_FILE_PRINT, obrázek na 4a obrázek velký na 4.

    5. Změňte typ položky na Oddělovač a potom klikněte na Přidat.

    6. 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 na ID_FILE_CLOSE, obrázek na 5a obrázek velký na 5.

  6. Následující úpravy vytvoří podnabídku pod tlačítkem Tisk , které jste vytvořili v předchozím kroku.

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

    2. 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 na ID_FILE_PRINT, obrázek na 4a obrázek velký na 4.

    3. 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 na ID_FILE_PRINT_DIRECT, obrázek na 7a obrázek velký na 7.

    4. Klepněte na tlačítko Tisk a potom klepněte na tlačítko Vložit přidat další tlačítko. Změňte titulek na Print Pre&view, ID na ID_FILE_PRINT_PREVIEW, obrázek na 6a obrázek velký na 6.

    5. Změnili jste hlavní položky. Kliknutím na tlačítko Zavřít ukončete Editor položek.

  7. Následující úprava vytvoří tlačítko ukončení, které se zobrazí v dolní části nabídky tlačítko Aplikace .

    1. V Průzkumník řešení zvolte kartu Zobrazení zdrojů.

    2. V okně Vlastnosti kliknutím na tři tečky (...) vedle tlačítka otevřete Editor položek.

    3. Pokud je vybráno tlačítko Typ položky, klikněte na přidat tlačítko. Změnit titulek na E&xit, ID na ID_APP_EXIT, Obrázek na 8.

    4. 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 pruh pásu karet, deklarujte pruh pásu karet 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

  1. 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 panel pásu karet.

    // Ribbon bar for the application
    CMFCRibbonBar m_wndRibbonBar;
    
  2. Do souboru mainfrm.cpp přidejte následující kód před konečný return příkaz na konec CMainFrame::OnCreate funkce. 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 názorný postup 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 Pro úpravy

  1. 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 na IDB_RIBBON_HOMELARGE, Malé obrázky na IDB_RIBBON_HOMESMALL.

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

  3. 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_SCRIBBTYPE prostředku nabídky. Zadejte Clear All jako 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 na Clear All, ID na ID_EDIT_CLEAR_ALL, Index obrázku na 0, Velký index obrázku na 0.

  4. Uložte změny a pak sestavte a spusťte aplikaci. Aplikace Scribble by měla být zobrazena a měla by mít pruh pásu karet v horní části okna místo řádku nabídek. Panel pásu karet by měl mít jednu kategorii, domovskou stránku a domovskou stránku, jeden panel Upravit. Tlačítka pásu karet, která jste přidali, by měla být přidružená k existujícím obslužným rutinům 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

  1. CMainFrame::OnCreate Do 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);
    
  2. 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 klasickou ukázku knihovny MFC Scribble 1.0 tak, aby používala Návrhář pásu karet. Teď přejděte na část 2.

Viz také

Návody
Návod: Aktualizace aplikace MFC Scribble (část 2)