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

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

  2. 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>
    
  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í (.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::InitInstance po LoadStdProfileSettings() pokynu.

    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.

    Ve souborech mainfrm.h a mainfrm.cpp nahraďte všechny odkazy na CMDIFrameWnd všemi odkazy na CMDIFrameWndEx.

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

    V „childfrm“ V souboru nahraďte CSplitterWnd s CSplitterWndEx.

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

    V souboru mainfrm.h:

    1. Nahraďte CToolBar s CMFCToolBar.

    2. Nahraďte CStatusBar s CMFCStatusBar.

  8. V souboru mainfrm.cpp:

    1. Nahradit m_wndToolBar.SetBarStylem_wndToolBar.SetPaneStyle

    2. Nahradit m_wndToolBar.GetBarStylem_wndToolBar.GetPaneStyle

    3. Nahradit DockControlBar(&m_wndToolBar)DockPane(&m_wndToolBar)

  9. 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);
    
  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í 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

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

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

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

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

    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. 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 res adresář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.

  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 filelarge.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 panelu nástrojů je kategorie a skládá se z textového popisku a volitelného obrázku.

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

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

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

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

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

  1. Pokud je projekt Scribble vybraný v Průzkumníku ř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 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.

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

  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. S vybraným typem položkytlačítko klikněte na Přidat pro přidání tlačítka. 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 na Vložit pro přidání dalšího tlačítka. 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íku řešení zvolte kartu Zobrazení prostředků.

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

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

  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 pás 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 prohlášení před ukončením funkce CMainFrame::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

  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; 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

  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 klasický příklad Scribble MFC 1.0, aby používal Návrhář pásu karet. Teď přejděte na část 2.

Viz také

Průvodci
Návod: Aktualizace aplikace MFC Scribble (část 2)