Exemplarische Vorgehensweise: Aktualisieren der MFC-Scribble-Anwendung (Teil 1)

Diese exemplarische Vorgehensweise veranschaulicht, wie eine vorhandene MFC-Anwendung ändert, die Benutzeroberfläche zu verwenden.Visual Studio unterstützt das Office 2007-Menüband und das szenische Menüband Windows 7s.Weitere Informationen über die Benutzeroberfläche, finden Menübänder Sie auf der MSDN-Website.

Diese exemplarische Vorgehensweise ändert das klassische MFC-Beispiel Scribble 1.0 MFC, das Sie die Maus verwenden können, um Strichzeichnungen zu erstellen.In diesem Teil der exemplarischen Vorgehensweise wird gezeigt, wie das Scribble-Beispiel ändert, sodass es eine Menübandleiste anzeigt.Teil 2 weitere Schaltflächen der Menübandleiste hinzu.

Vorbereitungsmaßnahmen

Visual C++-Beispiele

Visual C++-Beispiele

Abschnitte

In diesem Teil der exemplarischen Vorgehensweise enthält die folgenden Abschnitte:

  • Ersetzen der Basisklassen

  • Hinzufügen von Bitmaps zum Projekt

  • Hinzufügen einer Menüband-Ressource zum Projekt

  • Erstellen einer Instanz der Menüband-Leiste

  • Hinzufügen einer Menüband-Kategorie

  • Festlegen der Darstellung der Anwendung

Ersetzen der Basisklassen

Um eine Anwendung zu konvertieren die ein Menü zu einer Anwendung unterstützt die ein Menüband unterstützt, müssen Sie die Anwendung, das Rahmenfenster und die Symbolleistenklassen von aktualisierten Basisklassen ableiten.(Es wird empfohlen, dass Sie nicht das ursprüngliche Scribble-Beispiel ändern; stattdessen bereinigen Sie das Scribbleprojekt, kopieren Sie sie in ein anderes Verzeichnis, und ändern Sie dann die Kopie.)

Um die Basisklassen in der Skizzenanwendung aktualisiert ersetzen

  1. In scribble.cpp überprüfen Sie, ob CScribbleApp::InitInstance einen Aufruf AfxOleInit einschließt.

  2. Fügen Sie den folgenden Code der stdafx.h-Datei hinzu.

    #include <afxcontrolbars.h>
    
  3. In scribble.h ändern Sie die Definition für die CScribbleApp-Klasse, sodass sie von CWinAppEx-Klasse abgeleitet wird.

    class CScribbleApp: public CWinAppEx
    
  4. Scribble 1.0 geschrieben wurde, als Windows-Anwendungen eine Initialisierungsdatei (.ini) verwenden, um Benutzereinstellungen zu speichern.Anstelle einer Initialisierungsdatei ändern Sie Scribble, um Benutzereinstellungen in der Registrierung zu speichern.Um den Registrierungsschlüssel und die Basis festzulegen, geben Sie den folgenden Code in CScribbleApp::InitInstance nach der LoadStdProfileSettings()-Anweisung ein.

    SetRegistryKey(_T("MFCNext\\Samples\\Scribble2"));
    SetRegistryBase(_T("Settings"));
    
  5. Der Hauptframes für eine Anwendung (Multiple Document Interface) wird nicht mehr von der CMDIFrameWnd-Klasse abgeleitet.Stattdessen wird es von der CMDIFrameWndEx-Klasse abgeleitet.

    In den mainfrm.h- und mainfrm.cpp-Dateien ersetzen Sie alle Verweise auf CMDIFrameWnd durch CMDIFrameWndEx.

  6. In den childfrm.h- und childfrm.cpp-Dateien ersetzen Sie CMDIChildWnd durch CMDIChildWndEx.

    Im childfrm.h-Datei, ersetzen CSplitterWnd durch CSplitterWndEx.

  7. Ändern Sie Symbolleisten und Statusleisten, um die neuen MFC-Klassen zu verwenden.

    In der mainfrm.h-Datei:

    1. Ersetzen Sie CToolBar durch CMFCToolBar.

    2. Ersetzen Sie CStatusBar durch CMFCStatusBar.

  8. In der mainfrm.cpp-Datei:

    1. Ersetzen Sie m_wndToolBar.SetBarStyle durch m_wndToolBar.SetPaneStyle

    2. Ersetzen Sie m_wndToolBar.GetBarStyle durch m_wndToolBar.GetPaneStyle

    3. Ersetzen Sie DockControlBar(&m_wndToolBar) durch DockPane(&m_wndToolBar)

  9. In der ipframe.cpp-Datei kommentieren Sie die folgenden drei Codezeilen.

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->DockPane(&m_wndToolBar);
    
  10. Wenn Sie beabsichtigen, die Anwendung statisch verknüpft, fügen Sie folgenden Code am Anfang der Datei der Projektressource (.rc) hinzu.

    #include "afxribbon.rc"
    

    Die afxribbon.rc-Datei enthält Ressourcen, die zur Laufzeit erforderlich sind.MFC Application Wizard schließt diese Datei automatisch, wenn Sie eine Anwendung erstellen.

  11. Speichern Sie die Änderungen und erstellen Sie anschließend und führen Sie die Anwendung aus.

[Abschnitte]

Hinzufügen von Bitmaps zum Projekt

Die folgenden vier Schritte dieser exemplarischen Vorgehensweise benötigen Bitmapressourcen.Sie erhalten entsprechende Bitmaps auf verschiedene Arten:

  • Verwenden Sie Ressourcen-Editoren, eigene Bitmaps in erfinden.Oder verwenden Sie die Ressourcen-Editoren, um Bitmaps auf Bildern des Portablen Network Graphics (.png) zusammenzustellen, die mit Visual Studio enthalten sind.Diese Bilder sind im VS2008ImageLibrary Verzeichnis.

    Für die Benutzeroberfläche, dass bestimmte Bitmaps transparente Bilder unterstützen.Transparente Bitmaps verwenden 32-Bit-Pixel, in denen 24 Bits der Rot-, Grün- angeben, und Blauanteil der Farbe, und 8 Bits definieren einen Alphakanal,, der die Transparenz der Farbe angibt.Die aktuellen Ressourcen-Editoren können anzeigen, aber Bitmaps mit 32-Bit-Pixeln nicht ändern.Sie können daher eine externe Grafik-Editor anstelle der Ressourcen-Editoren, um transparente Bitmaps zu bearbeiten.

  • Kopieren Sie eine entsprechende Ressourcendatei aus einer anderen Anwendung im Projekt und importieren Sie dann Bitmaps von dieser Datei.

Diese exemplarische Vorgehensweise kopiert Ressourcendateien von einer Anwendung im Beispielverzeichnis.

So Bitmaps zum Projekt hinzu

  1. Verwenden Sie Datei-Explorer, um die folgenden BMP-Dateien aus dem Verzeichnis Resources (res) des RibbonGadgets-Beispiels zu kopieren:

    1. Kopieren Sie main.bmp zu dem Scribbleprojekt.

    2. Kopieren Sie filesmall.bmp und filelarge.bmp zu dem Scribbleprojekt.

    3. Erstellen Sie neue Kopien von den filelarge.bmp- und filesmall.bmp-Dateien, aber speichern Sie die Kopien im RibbonGadgets-Beispiel.Benennen Sie die Kopien homesmall.bmp und homelarge.bmp und verschieben Sie dann die Kopien auf das Scribbleprojekt.

    4. Erstellen Sie eine Kopie des toolbar.bmp aufzunehmen, aber speichern Sie die Kopie im RibbonGadgets-Beispiel.Benennen Sie die Kopie panelicons.bmp und verschieben Sie dann die Kopie auf das Scribbleprojekt.

  2. Importieren Sie die Bitmap für eine MFC-Anwendung.In Ressourcenansicht doppelklicken Sie auf den Knoten scribble.rc, doppelklicken Sie auf den Knoten Bitmap, und klicken Sie auf Ressource hinzufügen.Im Dialogfeld, das angezeigt wird, auf Importieren.Navigieren Sie zu res das Verzeichnis, wählen Sie die main.bmp-Datei aus, und klicken Sie dann auf Öffnen.

    Die main.bmp-Bitmap enthält ein Bild 26x26.Ändern Sie die ID der Bitmap auf IDB_RIBBON_MAIN.

  3. Importieren Sie die Bitmaps für das Dateimenü, das der Anwendungsschaltfläche angefügt wird.

    1. Importieren Sie die filesmall.bmp-Datei, die zehn Bilder 16x16 (16x160) enthält.Da nur acht Bilder 16x16 (16x128) benötigen, verwenden Sie Ressourcenansicht, um die Breite dieser Bitmap von 160 bis 128 zu ändern.Ändern Sie die ID der Bitmap auf IDB_RIBBON_FILESMALL.

    2. Importieren Sie das filelarge.bmp, das acht Bilder 32x32 (32x256) enthält.Ändern Sie die ID der Bitmap auf IDB_RIBBON_FILELARGE.

  4. Importieren Sie die Bitmaps für die Menübandkategorien und Bereiche.Jede Registerkarte in der Menübandleiste ist eine Kategorie und besteht aus einer Beschriftung und einem optionalen Bild.

    1. Importieren Sie die homesmall.bmp-Bitmap, die acht Bilder 16x16 für kleine Schaltflächenbitmaps enthält.Ändern Sie die ID der Bitmap auf IDB_RIBBON_HOMESMALL.

    2. Importieren Sie die homelarge.bmp-Bitmap, die acht Bilder 32x32 für große Schaltflächenbitmaps enthält.Ändern Sie die ID der Bitmap auf IDB_RIBBON_HOMELARGE.

  5. Importieren Sie Bitmaps für die Größe geänderten Menübandbereiche.Diese Bitmap oder Bereichssymbole werden, nachdem ein Größe geänderte Vorgang verwendet, wenn das Menüband zu klein ist, den gesamten Bereich anzuzeigen.

    1. Importieren Sie die panelicons.bmp-Bitmap, die acht Bilder 16x16 enthält.Im Fenster EigenschaftenBitmap-Editor, passen Sie die Breite der Bitmap auf 64 (16x64).Ändern Sie die ID der Bitmap auf IDB_PANEL_ICONS.

[Abschnitte]

Hinzufügen einer Menüband-Ressource zum Projekt

Wenn Sie eine Anwendung konvertieren, die Menüs an eine Anwendung verwendet, die ein Menüband verwendet, müssen Sie die vorhandenen Menüs nicht entfernen oder deaktivieren.Erstellen Sie stattdessen eine Menübandressource, fügen Menübandschaltflächen hinzu und ordnen dann die neuen Schaltflächen mit den vorhandenen Menüelementen zu.Obwohl die Menüs nicht mehr sichtbar sind, werden Meldungen aus der Menübandleiste durch die Menüs weitergeleitet.Darüber hinaus deaktivieren Menüverknüpfungen fort, um zu arbeiten.

Ein Menüband besteht der Anwendungsschaltfläche, die die große Schaltfläche auf der obere linke Seite des Menübands ist, und mindestens einem Kategorienregisterkarten.Jede Kategorienregisterkarte enthält eine oder mehrere Bereiche, die als Container für Menübandschaltflächen und Steuerelemente auftreten.Das folgende Verfahren veranschaulicht, wie eine Menübandressource erstellt und dann die Anwendungsschaltfläche angepasst wird.

So fügen Sie eine Menübandressource zum Projekt hinzu

  1. Klicken Sie im Menü auf ProjektRessource hinzufügen.

  2. Im Dialogfeld Ressource hinzufügen ausgewähltes Menüband klicken und dann auf Neu.

    Visual Studio erstellt eine Menübandressource und öffnet sie in der Entwurfsansicht.Das Menübandressourcen-id ist IDR_RIBBON1, die in Ressourcenansicht angezeigt wird.Das Menüband enthält eine Kategorie und einen Bereich.

  3. Sie können die Anwendungsschaltfläche anpassen, indem Sie ihre Eigenschaften ändern.Die Meldung ID, die in diesem Code verwendet werden, ist bereits im Menü für Scribble 1.0 definiert.

  4. Klicken Sie in der Entwurfsansicht auf die Anwendungs-Schaltfläche, um seine Eigenschaften anzuzeigen.Änderungseigenschaftswerte, wie folgt: Bild zu IDB_RIBBON_MAIN, Eingabeaufforderung zu Datei, Schlüssel zu f, Große Bilder zu IDB_RIBBON_FILELARGE und Kleine Bilder zu IDB_RIBBON_FILESMALL.

  5. Die folgenden Änderungen erstellen das Menü, das angezeigt wird, wenn der Benutzer auf die Anwendungsschaltfläche klickt.Klicken Sie auf die Auslassungszeichen (...) neben Hauptelemente, um Elemente-Editor zu öffnen.

    1. Klicken Sie auf Hinzufügen, um eine Schaltfläche hinzuzufügen.Änderung Beschriftung an &New, ID zu ID_FILE_NEW, Bild zu 0, Bild groß zu 0.

    2. Klicken Sie auf Hinzufügen, um eine zweite Schaltfläche hinzuzufügen.Ändern Sie Beschriftung in &Speichern, ID in ID_FILE_SAVE, Bild in 2 und Bild groß in 2.

    3. Klicken Sie auf Hinzufügen, um eine dritte Schaltfläche hinzuzufügen.Ändern Sie Beschriftung in Speichern &unter, ID in ID_FILE_SAVE_AS, Bild in 3 und Bild groß in 3.

    4. Klicken Sie auf Hinzufügen, um eine vierte Schaltfläche hinzuzufügen.Ändern Sie Beschriftung in &Drucken, ID in ID_FILE_PRINT, Bild in 4 und Bild groß in 4.

    5. Ändern Sie den item-Typ zu Trennzeichen und dann auf Hinzufügen.

    6. Ändern Sie den item-Typ zu Schaltfläche.Klicken Sie auf Hinzufügen, um eine fünfte Schaltfläche hinzuzufügen.Ändern Sie Beschriftung in S&chließen, ID in ID_FILE_CLOSE, Bild in 5 und Bild groß in 5.

  6. Die folgenden Änderungen erstellen ein Untermenü unter der Druckschaltfläche, die Sie im vorherigen Schritt erstellt haben.

    1. Klicken Sie auf die Schaltfläche Drucken, ändern Sie den item-Typ zu Bezeichnung, und klicken Sie dann auf Einfügen.Ändern Sie Beschriftung zu Anzeigen einer Vorschau und drucken Sie das Dokument.

    2. Klicken Sie auf die Schaltfläche Drucken , ändern Sie den item -Typ zu Schaltfläche, und klicken Sie auf Einfügen.Ändern Sie Beschriftung in &Drucken, ID in ID_FILE_PRINT, Bild in 4 und Bild groß in 4.

    3. Klicken Sie auf die Schaltfläche Drucken und dann auf Einfügen, um eine Schaltfläche hinzuzufügen.Ändern Sie Beschriftung in Schnell d&rucken, ID in ID_FILE_PRINT_DIRECT, Bild in 7 und Bild groß in 7.

    4. Klicken Sie auf die Schaltfläche Drucken und dann auf Einfügen, um eine weitere Schaltfläche hinzuzufügen.Änderung Beschriftung an Drucken Pre&view, an ID zu ID_FILE_PRINT_PREVIEW, an Bild zu 6 und an Bild groß zu 6.

    5. Sie haben jetzt Hauptelemente geändert.Schließen auf, um Elemente-Editor zu beenden.

  7. Die folgende Änderung stellt eine Beendigungsschaltfläche erstellt, die am unteren Rand des Anwendungsschaltflächenmenü angezeigt wird.

    1. Im Fenster Eigenschaften klicken Sie auf die Auslassungspunkte (...) neben Schaltfläche, um Elemente-Editor zu öffnen.

    2. Klicken Sie auf Hinzufügen, um eine Schaltfläche hinzuzufügen.Änderung Beschriftung an B&eenden, ID zu ID_APP_EXIT, Bild zu 8.

[Abschnitte]

Erstellen einer Instanz der Menüband-Leiste

Die folgenden Schritte zeigen, wie eine Instanz der Menübandleiste wenn die Anwendung erstellt.Um eine Menübandleiste einer Anwendung hinzufügen möchten, deklarieren Sie die Menübandleiste in der mainfrm.h-Datei.In der mainfrm.cpp-Datei, schreiben Sie Code, um die Menübandressource laden.

Um eine Instanz der Menübandleiste erstellen

  1. In der mainfrm.h-Datei fügen Sie einen Datenmember des geschützten Abschnitt von CMainFrame, die Klassendefinition für den Hauptframes hinzu.Dieser Member stellt die Menübandleiste dar.

    // Ribbon bar for the application
    CMFCRibbonBar  m_wndRibbonBar;
    
  2. In der mainfrm.cpp-Datei fügen Sie folgenden Code vor die endgültige return-Anweisung am Ende der CMainFrame::OnCreate-Funktion hinzu.Erstellt eine Instanz der Menübandleiste.

    // Create the ribbon bar
    if (!m_wndRibbonBar.Create(this))
    {
    return -1;   //Failed to create ribbon bar
    }
    m_wndRibbonBar.LoadFromResource(IDR_RIBBON1);
    

[Abschnitte]

Anpassen der Menüband-Ressource

Nachdem Sie die Anwendungsschaltfläche erstellt haben, können Sie Elemente dem Menüband hinzugefügt.

HinweisHinweis

In dieser exemplarischen Vorgehensweise wird das gleiche Bereichssymbol für alle Bereiche.Sie können jedoch auch andere Bildlistenindizes verwenden, um andere Symbole anzuzeigen.

Um eine private Kategorie und eine Bearbeiten-Bereich hinzufügen

  1. Das Scribbleprogramm erfordert nur eine Kategorie.In der Entwurfsansicht auf Kategorie, um seine Eigenschaften anzuzeigen.Änderungseigenschaftswerte, wie folgt: Beschriftung zu &Home, Große Bilder zu IDB_RIBBON_HOMELARGE, Kleine Bilder zu IDB_RIBBON_HOMESMALL.

  2. Jede Menübandkategorie wird in benannten Bereiche unterteilt.Jeder Bereich enthält einen Satz von Steuerelementen, die verwandte Vorgänge ausführen.Diese Kategorie hat einen Bereich.Sie Bereich und ändern dann Beschriftung zu Bearbeiten und Bildindex zu 0.

  3. So Bereich Bearbeiten fügen Sie eine Schaltfläche hinzu, die zum Löschen des Inhalts des Dokuments zuständig ist.Die Meldungs-ID für diese Schaltfläche ist bereits in der IDR_SCRIBBTYPE-Menüressource definiert.Geben Sie Löschen Sie alle wie der Anmeldung und der Index der Bitmaps an, die die Schaltfläche ergänzt.Öffnen Sie Werkzeugkasten, und ziehen Sie dann Schaltfläche zum Bereich Bearbeiten.Klicken Sie auf die Schaltfläche und ändern Sie dann Beschriftung zu Löschen Sie alle, ID zu ID_EDIT_CLEAR_ALL, Bildindex zu 0, Großer Bildindex zu 0.

  4. Speichern Sie die Änderungen, und erstellen Sie anschließend und führen Sie die Anwendung aus.Die Skizzenanwendung aktualisiert sollte angezeigt werden, und sie sollte eine Menübandleiste anstelle einer Menüleiste am oberen Rand des Fensters haben.Die Menübandleiste sollte eine Kategorie, Startseite haben, und Startseite sollte einen Bereich, Bearbeiten haben.Die Menübandschaltflächen, die Sie hinzugefügt haben, sollten mit den vorhandenen Ereignishandler und Öffnen, Schließen, Speichern, Drucken und Alle löschen Schaltflächen zugeordnet werden sollten erwartungsgemäß funktionieren.

[Abschnitte]

Festlegen der Darstellung der Anwendung

Ein visueller Manager ist ein globales Objekt, das alle Zeichnen für eine Anwendung gesteuert.Da die ursprüngliche Skizzenanwendung aktualisiert das Format der Office 2000-Benutzeroberfläche (Benutzeroberfläche) verwendet, wird die Anwendung möglicherweise altmodisch.Sie können die Anwendung zurücksetzen, den visuellen Manager für Office 2007 zu verwenden, sodass sie einer Office 2007-Anwendung ähnelt.

Um das Aussehen der Anwendung festlegen

  1. In der CMainFrame::OnCreate-Funktion geben Sie den folgenden Code ein, um den standardmäßigen visuellen Manager und das Format zu ändern.

    // Set the default manager to Office 2007 
    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
    CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
    
  2. Speichern Sie die Änderungen, und erstellen Sie anschließend und führen Sie die Anwendung aus.Die Anwendungsbenutzeroberfläche sollte dem Office 2007 Benutzeroberfläche ähneln.

[Abschnitte]

Nächste Schritte

Sie haben das klassische MFC-Beispiel Scribble MFC 1.0 geändert, um des Menüband-Designers.Wechseln Sie jetzt zu Teil 2.

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Aktualisieren der MFC-Scribble-Anwendung (Teil 2)

Weitere Ressourcen

Exemplarische Vorgehensweisen (MFC)