Sdílet prostřednictvím


Názorný postup: Aktualizace aplikace Klikyháky MFC (část 2)

Část 1 v tomto návodu ukázalo, jak přidat Office Fluent pásu karet na klasickou Klikyháky aplikace.Tato část ukazuje, jak přidat panely pásu karet a ovládací prvky, které uživatelé mohou používat namísto nabídky a příkazy.

Požadavky

Visual C++-vzory

Oddíly

Tato část návod obsahuje následující oddíly:

  • Přidání nové panely na pásu karet

  • Přidání panelu Nápověda na pásu karet

  • Přidání panelu Pero na pásu karet

  • Přidání tlačítka Barva na pásu karet

  • Přidání člena barev třídy dokumentu

  • Inicializace pera a předvolby ukládání

Přidání nové panely na pásu karet

Tyto kroky ukazují, jak přidat zobrazení panel, který obsahuje dvě políčka ovládání viditelnosti panelu nástrojů a stavový řádek a také okno panel obsahující tlačítko Rozdělit svisle orientovaný, který řídí vytvoření a uspořádání oken MDI (MDI).

Přidání zobrazení panelu a panelu okna na panel pásu karet

  1. Vytvořit panel s názvem zobrazení, která má dvě políčka přepnout stavového řádku a panelů nástrojů.

    1. Z nástrojů, přetáhněte Panel do Home kategorie.Přetáhněte dvě políčka do panelu.

    2. Klepněte v panelu upravit jeho vlastnosti.Změna Titulek na zobrazení.

    3. Klepněte na první políčko upravit jeho vlastnosti.Změna ID na ID_VIEW_TOOLBAR a Titulek na nástrojů.

    4. Klepněte na políčko druhé upravovat jeho vlastnosti.Změna ID na ID_VIEW_STATUS_BAR a Titulek na Stavový řádek.

  2. Vytvořit panel s názvem okno , který má tlačítko Rozdělit.Když uživatel klepne na tlačítko rozdělení, místní nabídky zobrazí tři příkazy, které jsou již definovány v aplikaci Klikyháky.

    1. Z nástrojů, přetáhněte Panel do Home kategorie.Potom přetáhněte tlačítko do panelu.

    2. Klepněte v panelu upravit jeho vlastnosti.Změna Titulek na okno.

    3. Klikněte na tlačítko.Change Caption to Windows, Keys to w, Large Image Index to 1, and Split Mode to False.Klepněte na tlačítko se třemi tečkami (...) vedle Položky nabídky otevřete Editor položek dialogové okno.

    4. Klepněte na tlačítko Přidat třikrát přidat tři tlačítka.

    5. Klepněte na první tlačítko a Titulek na Nové okno, a ID na ID_WINDOW_NEW.

    6. Druhé tlačítko a potom změňte Titulek na na sebe, a ID na ID_WINDOW_CASCADE.

    7. Třetí tlačítko a potom změňte Titulek na dlaždice, a ID na ID_WINDOW_TILE_HORZ.

  3. Uložit změny a sestavit a spustit aplikaci.Zobrazení a okno by měly být zobrazeny panely.Klepnutím na tlačítka potvrdit, že jsou správně fungovat.

[Oddíly]

Přidání panelu Nápověda na pásu karet

Nyní můžete přiřadit dvě položky nabídky, které jsou definovány v aplikaci Klikyháky na pásu karet tlačítka, která jsou s názvem témata nápovědy a O Klikyháky.Tlačítka jsou přidány nové panely s názvem pomoci.

Přidání panelu Nápověda

  1. Z nástrojů, přetáhněte Panel do Home kategorie.Přetáhněte dvě tlačítka do panelu.

  2. Klepněte v panelu upravit jeho vlastnosti.Změna Titulek na pomoci.

  3. První tlačítko.Změna Titulek na témata nápovědy, a ID na ID_HELP_FINDER.

  4. Druhé tlačítko.Změna Titulek na O Klikyháky..., and ID to ID_APP_ABOUT.

  5. Uložit změny a sestavit a spustit aplikaci.A pomoci by měl být zobrazen panel, který obsahuje dvě tlačítka na pásu karet.

    Důležitá poznámkaDůležité

    Po klepnutí témata nápovědy tlačítko, otevře aplikace Klikyháky komprimovaný soubor nápovědy HTML (.chm) s názvem your_project_name. chm.Proto pokud není Klikyháky projektu, je třeba přejmenovat soubor nápovědy k názvu projektu.

[Oddíly]

Přidání panelu Pero na pásu karet

Nyní přidáte panel zobrazení tlačítek, která řídí tloušťku a barvu pera.Tento panel obsahuje zaškrtávací políčko, které přepíná mezi tlustý a tenký pera.Jeho funkce se podobá se Tlustou čárou položky nabídky v aplikaci Klikyháky.

Původní Klikyháky aplikace umožňuje uživateli dialogové okno se zobrazí po klepnutí vyberte šířku pera Šířku pera v nabídce.Protože pásu panel má dostatek místa pro nové ovládací prvky, je dialogové okno nahradit pomocí dvou polí se seznamem na pásu karet.Jedno pole se seznamem upravuje šířku pera tenké a ostatní pole se seznamem upraví šířku tloušťku pera.

Přidání panelu Pero a se seznamem polí pásu karet

  1. Z nástrojů, přetáhněte Panel do Home kategorie.Potom přetáhněte políčko a dvě Seznamem do panelu.

  2. Klepněte v panelu upravit jeho vlastnosti.Změna Titulek na pero.

  3. Klepněte na zaškrtávací políčko.Změna Titulek na používat silné, a ID na ID_PEN_THICK_OR_THIN.

  4. Klepněte na první pole se seznamem.Change Caption to Thin Pen, ID to ID_PEN_THIN_WIDTH, Text to 2, Type to Drop List, and Data to 1;2;3;4;5;6;7;8;9;.

  5. Klepněte na druhé pole se seznamem.Změnit Titulek na tloušťku pera, ID na ID_PEN_THICK_WIDTH, Text na 5, typu na Drop seznam, a Data na 5; 6; 7; 8; 9; 10; 11; 12; 13; 14; 15; 16, 17, 18; 19; 20;.

  6. Novým seznamem neodpovídají žádné existující položky nabídky.Proto musí vytvořit položku pro každou možnost pera.

    1. V Zobrazení zdrojů okna, otevřete zdroj nabídky IDR_SCRIBBTYPE.

    2. Klepněte na tlačítko pero otevřete pen nabídce.Klepněte na tlačítko Zde typ a Thi & n pero.

    3. Pravým tlačítkem myši na text, který jste právě zadali otevřete Vlastnosti okna a změnit ID vlastnosti ID_PEN_THIN_WIDTH.

    4. Musíte také vytvořit obslužnou rutinu události pro všechny položky nabídky pera.Klepněte pravým tlačítkem myši Thi & n pero položky nabídky, která právě vytvořili a klepněte na tlačítko Přidání obslužné rutiny události.Průvodce obslužné rutiny události je zobrazen.

    5. V seznam tříd pole v okně průvodce vyberte CScribbleDoc a klepněte na tlačítko přidejte a upravte.Tím se vytvoří obslužnou rutinu události s názvem CScribbleDoc::OnPenThinWidth.

    6. Přidejte následující kód na CScribbleDoc::OnPenThinWidth.

      // Get a pointer to the ribbon bar
      CMFCRibbonBar* pRibbon = ((CMDIFrameWndEx*) AfxGetMainWnd())->GetRibbonBar();
      ASSERT_VALID(pRibbon);
      // Get a pointer to the Thin Width combo box
      CMFCRibbonComboBox* pThinComboBox = DYNAMIC_DOWNCAST(
         CMFCRibbonComboBox, pRibbon->FindByID(ID_PEN_THIN_WIDTH));
      //Get the selected value
      int nCurSel = pThinComboBox->GetCurSel();
      if (nCurSel >= 0)
      {
         m_nThinWidth = atoi(pThinComboBox->GetItem(nCurSel));
      }
      // Create a new pen using the selected width
      ReplacePen();  
      
  7. Dále vytvořte nabídku zboží a události rutiny pro tloušťku pera.

    1. V Zobrazení zdrojů okna, otevřete zdroj nabídky IDR_SCRIBBTYPE.

    2. Klepněte na tlačítko pero otevřete nabídku pera.Klepněte na tlačítko Zde typ a Thic & pero k.

    3. Text, který jste právě zadali zobrazení klepněte pravým tlačítkem Vlastnosti okna.Změnit ID vlastnosti ID_PEN_THICK_WIDTH.

    4. Klepněte pravým tlačítkem myši Tloušťku pera položky nabídky, která právě vytvořili a klepněte na tlačítko Přidání obslužné rutiny události.Průvodce obslužné rutiny události je zobrazen.

    5. V seznam tříd okně průvodce vyberte CScribbleDoc a klepněte na tlačítko přidejte a upravte.Tím se vytvoří obslužnou rutinu události s názvem CScribbleDoc::OnPenThickWidth.

    6. Přidejte následující kód na CScribbleDoc::OnPenThickWidth.

      // Get a pointer to the ribbon bar
      CMFCRibbonBar* pRibbon = ((CMDIFrameWndEx *) AfxGetMainWnd())->GetRibbonBar();
      ASSERT_VALID(pRibbon);
      CMFCRibbonComboBox* pThickComboBox = DYNAMIC_DOWNCAST(
         CMFCRibbonComboBox, pRibbon->FindByID(ID_PEN_THICK_WIDTH));
      // Get the selected value
      int nCurSel = pThickComboBox->GetCurSel();
      if (nCurSel >= 0)
      {
         m_nThickWidth = atoi(pThickComboBox->GetItem(nCurSel));
      }
      // Create a new pen using the selected width
      ReplacePen();
      
  8. Uložit změny a sestavit a spustit aplikaci.Má být zobrazena nová tlačítka a pole se seznamem.Zkuste pomocí pera různých šířek Klikyháky.

[Oddíly]

Přidání tlačítka Barva pera panely

Dále přidejte CMFCRibbonColorButton objekt, který uživateli umožňuje Klikyháky barevně.

Přidat do panelu pero tlačítko Barva

  1. Přidat tlačítko Barva, vytvořte pro tuto položku nabídky.V Zobrazení zdrojů okna, otevřete zdroj nabídky IDR_SCRIBBTYPE.Klepněte pero položku otevřete nabídku pera.Klepněte na tlačítko Zde typ a & Barva.Text, který jste právě zadali zobrazení klepněte pravým tlačítkem Vlastnosti okna.Změnit ID ID_PEN_COLOR.

  2. Nyní můžete přidáte tlačítko Barva.Z nástrojů, přetáhněte Tlačítka Barva do pero panel.

  3. Klepněte na tlačítko barvy.Change Caption to Color, ID to ID_PEN_COLOR, SimpleLook to True, Large Image Index to 1, and Split Mode to False.

  4. Uložit změny a sestavit a spustit aplikaci.Zobrazit nové tlačítko Barva na pero panel.Však nelze použít protože dosud nemá obslužnou rutinu události.Další kroky ukazují, jak přidat obslužnou rutinu události pro tlačítko Barva.

[Oddíly]

Přidání člena barev třídy dokumentu

Protože původní aplikace Klikyháky nemá barvu pera, musí pro ně zapsat implementace.Chcete-li uložit barvy pera dokumentu přidáte nového člena třídy dokumentuCscribbleDoc.

Přidání člena barev třídy dokumentu

  1. V scribdoc.h v CScribbleDoc třídy, najít // Attributes oddílu.Přidejte následující řádky kódu po vymezení m_nThickWidth datový člen.

    // Current pen color
    COLORREF   m_penColor;
    
  2. Každý dokument obsahuje seznam stokes, má uživatel již nakreslili.Každý tah je definován CStroke objektu.CStroke Třída nezahrnuje informace o Barva pera.Proto je třeba upravit třídu.V scribdoc.h v CStroke třídy, přidejte následující řádky kódu po vymezení m_nPenWidth datový člen.

    // Pen color for the stroke
    COLORREF   m_penColor;
    
  3. V scribdoc.h, přidejte nový CStroke konstruktoru, jehož parametry určují šířku a barvu.Přidejte následující řádek kódu po CStroke(UINT nPenWidth); prohlášení.

    CStroke(UINT nPenWidth, COLORREF penColor);
    
  4. V scribdoc.cpp, přidejte provádění nového CStroke konstruktoru.Po provedení přidejte následující kód CStroke::CStroke(UINT nPenWidth) konstruktoru.

    // Constructor that uses the document's current width and color
    CStroke::CStroke(UINT nPenWidth, COLORREF penColor)
    {
       m_nPenWidth = nPenWidth;
       m_penColor = penColor;
       m_rectBounding.SetRectEmpty();
    }
    
  5. Druhý řádek změňte CStroke::DrawStroke následující metodu.

    if (!penStroke.CreatePen(PS_SOLID, m_nPenWidth, m_penColor))
    
  6. Nastavte výchozí barvu pera třídy dokumentu.V scribdoc.cpp, přidejte následující řádky do CScribbleDoc::InitDocument, po m_nThickWidth = 5; prohlášení.

    // default pen color is black
    m_penColor = RGB(0,0,0); 
    
  7. V scribdoc.cpp, změnit první řádek CScribbleDoc::NewStroke následující metodu.

    CStroke* pStrokeItem = new CStroke(m_nPenWidth, m_penColor);
    
  8. Poslední řádek změňte CScribbleDoc::ReplacePen následující metodu.

    m_penCur.CreatePen(PS_SOLID, m_nPenWidth, m_penColor);
    
  9. Jste přidali m_penColor člen v předchozím kroku.Nyní vytvoření obslužné rutiny události barvu tlačítka, které nastaví člen.

    1. V Zobrazení zdrojů okna, otevřete zdroj nabídky IDR_SCRIBBTYPE.

    2. Klepněte pravým tlačítkem myši Barva položky nabídky a klepněte na Handler… přidat události.Průvodce obslužné rutiny události se zobrazí.

    3. V seznam tříd průvodce vyberte pole CScribbleDoc a klepněte přidejte a upravte tlačítko.Vytvoří CScribbleDoc::OnPenColor se zakázaným inzerováním obslužnou rutinu události.

  10. Se zakázaným inzerováním pro nahrazení CScribbleDoc::OnPenColor obslužné rutiny události s následujícím kódem.

    void CScribbleDoc::OnPenColor()
    {
    // Change pen color to reflect color button's current selection
    CMFCRibbonBar* pRibbon = ((CMDIFrameWndEx*) AfxGetMainWnd())->GetRibbonBar();
    ASSERT_VALID(pRibbon);
    CMFCRibbonColorButton* pColorBtn = DYNAMIC_DOWNCAST(
       CMFCRibbonColorButton, pRibbon->FindByID(ID_PEN_COLOR));
    m_penColor = pColorBtn->GetColor();
    // Create new pen using the selected color
    ReplacePen();
    }
    
  11. Uložit změny a sestavit a spustit aplikaci.Měli byste stiskněte tlačítko Barva a změnit barvu pera.

[Oddíly]

Inicializace pera a předvolby ukládání

Inicializace, barvu a šířku per.Konečně uložit a načíst ze souboru výkresu barvu.

Inicializace ovládacích prvků na panelu pásu karet

  1. Inicializace per na panelu pásu karet.

    Přidejte následující kód v scribdoc.cpp, CScribbleDoc::InitDocument metodou, po m_sizeDoc = CSize(200,200) prohlášení.

    // Reset the ribbon UI to its initial values
    CMFCRibbonBar* pRibbon = 
       ((CMDIFrameWndEx*) AfxGetMainWnd())->GetRibbonBar();
    ASSERT_VALID(pRibbon);
    CMFCRibbonColorButton* pColorBtn = DYNAMIC_DOWNCAST(
       CMFCRibbonColorButton, 
       pRibbon->FindByID(ID_PEN_COLOR));
    // Set ColorButton to black
    pColorBtn->SetColor(RGB(0,0,0));  
    CMFCRibbonComboBox* pThinComboBox = DYNAMIC_DOWNCAST(
       CMFCRibbonComboBox, 
       pRibbon->FindByID(ID_PEN_THIN_WIDTH));
    // Set Thin pen combobox to 2
    pThinComboBox->SelectItem(1); 
    CMFCRibbonComboBox* pThickComboBox = DYNAMIC_DOWNCAST(
       CMFCRibbonComboBox, 
       pRibbon->FindByID(ID_PEN_THICK_WIDTH));
    // Set Thick pen combobox to 5
    pThickComboBox->SelectItem(0);
    
  2. Uložte do souboru výkresu barvu.Přidat následující příkaz na scribdoc.cpp, CStroke::Serialize metoda, po ar << (WORD)m_nPenWidth; prohlášení.

    ar << (COLORREF)m_penColor;
    
  3. Nakonec načtěte ze souboru výkresu barvu.Přidat následující řádek kódu, CStroke::Serialize metodou, po m_nPenWidth = w; prohlášení.

    ar >> m_penColor;
    
  4. Nyní Klikyháky barvou a uložení výkresu do souboru.

[Oddíly]

Závěr

Aplikace MFC Klikyháky byl aktualizován.Pomocí tohoto postupu jako vodítko při úpravě existující aplikace.

Viz také

Úkoly

Názorný postup: Aktualizace aplikace Klikyháky MFC (část 1)

Další zdroje

Návody (MFC)