Udostępnij za pośrednictwem


Przewodnik: aktualizowanie aplikacji bazgrołów MFC (część 1)

W tym przewodniku pokazano, jak zmodyfikować istniejącą aplikację MFC w celu korzystania z interfejsu użytkownika wstążki. Program Visual Studio obsługuje zarówno wstążkę pakietu Office 2007, jak i wstążkę Scenic systemu Windows 7. Aby uzyskać więcej informacji na temat interfejsu użytkownika wstążki, zobacz Wstążki.

Ten przewodnik modyfikuje klasyczny przykład Scribble 1.0 MFC, który umożliwia użycie myszy do tworzenia rysunków liniowych. W tej części przewodnika pokazano, jak zmodyfikować przykład Scribble, aby wyświetlić pasek wstążki. Część 2 dodaje więcej przycisków na pasku wstążki.

Wymagania wstępne

Przykład scribble 1.0 MFC. Aby uzyskać pomoc dotyczącą konwertowania na program Visual Studio 2017 lub nowszy, zobacz Przewodnik przenoszenia: scribble MFC.

Sekcje

Ta część przewodnika zawiera następujące sekcje:

Zastępowanie klas bazowych

Aby przekonwertować aplikację, która obsługuje menu do aplikacji obsługującej wstążkę, należy utworzyć klasy aplikacji, okna ramowego i paska narzędzi ze zaktualizowanych klas bazowych. (Sugerujemy, że nie modyfikujesz oryginalnej próbki Scribble. Zamiast tego wyczyść projekt Scribble, skopiuj go do innego katalogu, a następnie zmodyfikuj kopię.

Aby zastąpić klasy bazowe w aplikacji Scribble

  1. W pliku scribble.cpp sprawdź, czy CScribbleApp::InitInstance zawiera wywołanie elementu AfxOleInit.

  2. Dodaj następujący kod do pliku pch.h (stdafx.h w programie Visual Studio 2017 i starszych wersjach):

    #include <afxcontrolbars.h>
    
  3. W pliku scribble.h zmodyfikuj CScribbleApp definicję klasy, aby pochodziła z klasy CWinAppEx.

    class CScribbleApp: public CWinAppEx
    
  4. Scribble 1.0 został napisany, gdy aplikacje systemu Windows używały pliku inicjalizacji (ini) do zapisywania danych preferencji użytkownika. Zamiast pliku inicjowania zmodyfikuj scribble, aby przechowywać preferencje użytkownika w rejestrze. Aby ustawić klucz rejestru i bazę, wpisz następujący kod po CScribbleApp::InitInstance instrukcji LoadStdProfileSettings() .

    SetRegistryKey(_T("MFCNext\\Samples\\Scribble2"));
    SetRegistryBase(_T("Settings"));
    
  5. Ramka główna dla aplikacji interfejsu wielu dokumentów (MDI) nie pochodzi już od CMDIFrameWnd klasy . Zamiast tego pochodzi ona z klasy CMDIFrameWndEx .

    W plikach mainfrm.h i mainfrm.cpp zastąp CMDIFrameWndExwszystkie odwołania do CMDIFrameWnd .

  6. W plikach childfrm.h i childfrm.cpp zastąp ciąg CMDIChildWnd .CMDIChildWndEx

    W polu podrzędnym. h plik, zastąp ciąg CSplitterWnd ciągiem CSplitterWndEx.

  7. Zmodyfikuj paski narzędzi i paski stanu, aby używać nowych klas MFC.

    W pliku mainfrm.h:

    1. Zamień CToolBar na CMFCToolBar.

    2. Zamień CStatusBar na CMFCStatusBar.

  8. W pliku mainfrm.cpp:

    1. Zastąp ciąg m_wndToolBar.SetBarStyle ciągiem m_wndToolBar.SetPaneStyle

    2. Zastąp ciąg m_wndToolBar.GetBarStyle ciągiem m_wndToolBar.GetPaneStyle

    3. Zastąp ciąg DockControlBar(&m_wndToolBar) ciągiem DockPane(&m_wndToolBar)

  9. W pliku ipframe.cpp dodaj komentarz do następujących trzech wierszy kodu.

    m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->EnableDocking(CBRS_ALIGN_ANY);
    pWndFrame->DockPane(&m_wndToolBar);
    
  10. Zapisz zmiany, a następnie skompiluj i uruchom aplikację.

Dodawanie map bitowych do projektu

Następne cztery kroki tego przewodnika wymagają zasobów mapy bitowej. Możesz uzyskać odpowiednie mapy bitowe na różne sposoby:

  • Użyj edytorów zasobów, aby wymyślić własne mapy bitowe. Możesz też użyć edytorów zasobów, aby zebrać mapy bitowe z przenośnych obrazów sieciowych (png), które są dołączone do programu Visual Studio i można je pobrać z biblioteki obrazów programu Visual Studio.

    Jednak interfejs użytkownika wstążki wymaga, aby niektóre mapy bitowe obsługiwały przezroczyste obrazy. Przezroczyste mapy bitowe używają 32-bitowych pikseli, gdzie 24 bity określają czerwone, zielone i niebieskie składniki koloru, a 8 bitów definiuje kanał alfa, który określa przezroczystość koloru. Bieżące edytory zasobów mogą wyświetlać, ale nie modyfikować map bitowych z 32-bitowymi pikselami. W związku z tym użyj zewnętrznego edytora obrazów zamiast edytorów zasobów, aby manipulować przezroczystymi mapami bitowymi.

  • Skopiuj odpowiedni plik zasobów z innej aplikacji do projektu, a następnie zaimportuj mapy bitowe z tego pliku.

Ten przewodnik kopiuje pliki zasobów z przykładu utworzonego w przewodniku: tworzenie aplikacji wstążki przy użyciu MFC.

Aby dodać mapy bitowe do projektu

  1. Użyj Eksplorator plików, aby skopiować następujące pliki bmp z katalogu resources (res) przykładu wstążki do katalogu zasobów (res) projektu Scribble:

    1. Skopiuj plik main.bmp do projektu Scribble.

    2. Skopiuj plikimall.bmp i filelarge.bmp do projektu Scribble.

    3. Utwórz nowe kopie plików filelarge.bmp i filesmall.bmp, ale zapisz kopie w przykładzie wstążki. Zmień nazwę kopii homesmall.bmp i homelarge.bmp, a następnie przenieś kopie do projektu Scribble.

    4. Utwórz kopię pliku toolbar.bmp, ale zapisz kopię w przykładzie wstążki. Zmień nazwę pliku copy panelicons.bmp, a następnie przenieś kopię do projektu Scribble.

  2. Zaimportuj mapę bitową dla aplikacji MFC. W widoku zasobów kliknij dwukrotnie węzeł scribble.rc, kliknij dwukrotnie węzeł Mapa bitowa, a następnie kliknij przycisk Dodaj zasób. W wyświetlonym oknie dialogowym kliknij przycisk Importuj. Przejdź do res katalogu, wybierz plik main.bmp, a następnie kliknij przycisk Otwórz.

    Mapa bitowa main.bmp zawiera obraz 26x26. Zmień identyfikator mapy bitowej na IDB_RIBBON_MAIN.

  3. Zaimportuj mapy bitowe dla menu pliku dołączonego do przycisku Aplikacja .

    1. Zaimportuj plik filesmall.bmp zawierający jedenaście obrazów 16x16 (16x176). Zmień identyfikator mapy bitowej na IDB_RIBBON_FILESMALL.

    Uwaga

    Ponieważ potrzebujemy tylko pierwszych ośmiu obrazów 16x16 (16x128), opcjonalnie można przycinać szerokość prawej strony tej mapy bitowej z 176 do 128.

    1. Zaimportuj pliklarge.bmp zawierający dziewięć obrazów 32x32 (32x288). Zmień identyfikator mapy bitowej na IDB_RIBBON_FILELARGE.
  4. Zaimportuj mapy bitowe dla kategorii i paneli wstążki. Każda karta na pasku wstążki jest kategorią i składa się z etykiety tekstowej i opcjonalnego obrazu.

    1. Zaimportuj mapę bitową homesmall.bmp zawierającą jedenaście obrazów 16x16 dla małych map bitowych przycisków. Zmień identyfikator mapy bitowej na IDB_RIBBON_HOMESMALL.

    2. Zaimportuj mapę bitową homelarge.bmp zawierającą dziewięć obrazów 32x32 dla dużych map bitowych przycisków. Zmień identyfikator mapy bitowej na IDB_RIBBON_HOMELARGE.

  5. Importuj mapy bitowe dla zmienionych paneli wstążki. Te mapy bitowe lub ikony panelu są używane po operacji zmiany rozmiaru, jeśli wstążka jest zbyt mała, aby wyświetlić cały panel.

    1. Zaimportuj mapę bitową panelicons.bmp zawierającą osiem obrazów 16x16. W oknie Właściwości Edytora map bitowych dostosuj szerokość mapy bitowej do 64 (16x64). Zmień identyfikator mapy bitowej na IDB_PANEL_ICONS.

    Uwaga

    Ponieważ potrzebujemy tylko pierwszych czterech obrazów 16x16 (16x64), opcjonalnie możesz przycinać szerokość prawej strony tej mapy bitowej z 128 do 64.

Dodawanie zasobu wstążki do projektu

Podczas konwertowania aplikacji korzystającej z menu do aplikacji korzystającej ze wstążki nie trzeba usuwać ani wyłączać istniejących menu. Wystarczy utworzyć zasób wstążki, dodać przyciski wstążki, a następnie skojarzyć nowe przyciski z istniejącymi elementami menu. Mimo że menu nie są już widoczne, komunikaty z paska wstążki są kierowane przez menu i skróty menu nadal działają.

Wstążka składa się z przycisku Aplikacja , który jest dużym przyciskiem w lewym górnym rogu wstążki i co najmniej jedną kartą kategorii. Każda karta kategorii zawiera co najmniej jeden panel, który działa jako kontenery dla przycisków i kontrolek wstążki. Poniższa procedura przedstawia sposób tworzenia zasobu wstążki, a następnie dostosowywania przycisku Aplikacja .

Aby dodać zasób wstążki do projektu

  1. Po wybraniu projektu Scribble w Eksplorator rozwiązań w menu Projekt kliknij pozycję Dodaj zasób.

  2. W oknie dialogowym Dodawanie zasobu wybierz pozycję Wstążka, a następnie kliknij pozycję Nowy.

    Program Visual Studio tworzy zasób wstążki i otwiera go w widoku projektu. Identyfikator zasobu wstążki to IDR_RIBBON1, który jest wyświetlany w widoku zasobu. Wstążka zawiera jedną kategorię i jeden panel.

  3. Przycisk Aplikacja można dostosować, modyfikując jego właściwości. Identyfikatory komunikatów, które są używane w tym kodzie, są już zdefiniowane w menu dla scribble 1.0.

  4. W widoku projektu kliknij przycisk Aplikacja , aby wyświetlić jego właściwości. Zmień wartości właściwości w następujący sposób: Obraz na , Monituj do File, Klucze do f, Duże obrazy na IDB_RIBBON_FILELARGEi Małe obrazy na IDB_RIBBON_FILESMALL. IDB_RIBBON_MAIN

  5. Poniższe modyfikacje tworzą menu wyświetlane po kliknięciu przycisku Aplikacja przez użytkownika. Kliknij wielokropek (...) obok pozycji Elementy główne, aby otworzyć Edytor elementów.

    1. Po wybraniu przycisku Typelementu kliknij przycisk Dodaj, aby dodać przycisk. Zmień wartość Caption na , ID na ID_FILE_NEW, Image na &New, Image Large na 00.

    2. Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na &SaveID_FILE_SAVE, Image na 2, i Image Large na 2.

    3. Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na Save &AsID_FILE_SAVE_AS, Image na 3, i Image Large na 3.

    4. Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na &PrintID_FILE_PRINT, Image na 4, i Image Large na 4.

    5. Zmień typ elementu na Separator, a następnie kliknij przycisk Dodaj.

    6. Zmień typ elementu na Przycisk. Kliknij przycisk Dodaj , aby dodać piąty przycisk. Zmień wartość Caption na , ID na &CloseID_FILE_CLOSE, Image na 5, i Image Large na 5.

  6. Poniższe modyfikacje tworzą podmenu pod przyciskiem Drukuj utworzonym w poprzednim kroku.

    1. Kliknij przycisk Drukuj, zmień typ elementu na Etykieta, a następnie kliknij przycisk Wstaw. Zmień podpis na Preview and print the document.

    2. Kliknij przycisk Drukuj, zmień typ elementu na Przycisk, a następnie kliknij przycisk Wstaw. Zmień wartość Caption na , ID na &PrintID_FILE_PRINT, Image na 4, i Image Large na 4.

    3. Kliknij przycisk Drukuj, a następnie kliknij przycisk Wstaw, aby dodać przycisk. Zmień wartość Caption na , ID na &Quick PrintID_FILE_PRINT_DIRECT, Image na 7, i Image Large na 7.

    4. Kliknij przycisk Drukuj, a następnie kliknij przycisk Wstaw, aby dodać kolejny przycisk. Zmień wartość Caption na , ID na Print Pre&viewID_FILE_PRINT_PREVIEW, Image na 6, i Image Large na 6.

    5. Teraz zmodyfikowano elementy główne. Kliknij przycisk Zamknij , aby zamknąć Edytor elementów.

  7. Poniższa modyfikacja powoduje utworzenie przycisku zakończenia wyświetlanego w dolnej części menu przycisku Aplikacja .

    1. Wybierz kartę Widok zasobów w Eksplorator rozwiązań.

    2. W oknie Właściwości kliknij wielokropek (...) obok pozycji Przycisk, aby otworzyć Edytor elementów.

    3. Po wybraniu przycisku Typelementu kliknij przycisk Dodaj, aby dodać przycisk. Zmień wartość Caption na , ID na E&xit, Image na ID_APP_EXIT8.

    4. Zmodyfikowano przyciski. Kliknij przycisk Zamknij , aby zamknąć Edytor elementów.

Tworzenie wystąpienia paska wstążki

W poniższych krokach pokazano, jak utworzyć wystąpienie paska wstążki po uruchomieniu aplikacji. Aby dodać pasek wstążki do aplikacji, zadeklaruj pasek wstążki w pliku mainfrm.h. Następnie w pliku mainfrm.cpp napisz kod, aby załadować zasób wstążki.

Aby utworzyć wystąpienie paska wstążki

  1. W pliku mainfrm.h dodaj składową danych do chronionej CMainFramesekcji , definicję klasy dla ramki głównej. Ten element członkowski jest przeznaczony dla paska wstążki.

    // Ribbon bar for the application
    CMFCRibbonBar m_wndRibbonBar;
    
  2. W pliku mainfrm.cpp dodaj następujący kod przed końcową return instrukcją na końcu CMainFrame::OnCreate funkcji. Tworzy wystąpienie paska wstążki.

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

Dostosowywanie zasobu wstążki

Po utworzeniu przycisku Aplikacja możesz dodać elementy do wstążki.

Uwaga

W tym przewodniku jest używana ta sama ikona panelu dla wszystkich paneli. Można jednak użyć innych indeksów listy obrazów, aby wyświetlić inne ikony.

Aby dodać kategorię Narzędzia główne i Panel edycji

  1. Program Scribble wymaga tylko jednej kategorii. W widoku projektu w przyborniku kliknij dwukrotnie pozycję Kategoria, aby dodać jedną i wyświetlić jej właściwości. Zmień wartości właściwości w następujący sposób: Caption to , Large Images to , Small Images to IDB_RIBBON_HOMELARGEIDB_RIBBON_HOMESMALL. &Home

  2. Każda kategoria wstążki jest podzielona na nazwane panele. Każdy panel zawiera zestaw kontrolek, które zakończą powiązane operacje. Ta kategoria ma jeden panel. Kliknij pozycję Panel, a następnie zmień pozycję Podpis na Edit.

  3. Na panelu Edycja dodaj przycisk odpowiedzialny za wyczyszczenie zawartości dokumentu. Identyfikator komunikatu dla tego przycisku został już zdefiniowany w zasobie IDR_SCRIBBTYPE menu. Określ Clear All jako tekst przycisku i indeks mapy bitowej, która dekoruje przycisk. Otwórz przybornik, a następnie przeciągnij przycisk do panelu Edycja. Kliknij przycisk, a następnie zmień pozycję Caption na , ID na ID_EDIT_CLEAR_ALLClear All, Image Index na , Large Image Index na 00.

  4. Zapisz zmiany, a następnie skompiluj i uruchom aplikację. Aplikacja Scribble powinna być wyświetlana i powinna mieć pasek wstążki w górnej części okna zamiast paska menu. Pasek wstążki powinien mieć jedną kategorię, Narzędzia główne i Strona główna powinna mieć jeden panel, Edytuj. Dodane przyciski wstążki powinny być skojarzone z istniejącymi procedurami obsługi zdarzeń, a przyciski Otwórz, Zamknij, Zapisz, Drukuj i Wyczyść wszystkie powinny działać zgodnie z oczekiwaniami.

Ustawianie wyglądu aplikacji

Menedżer wizualizacji to obiekt globalny, który kontroluje cały rysunek dla aplikacji. Ponieważ oryginalna aplikacja Scribble używa stylu interfejsu użytkownika pakietu Office 2000, aplikacja może wyglądać staroświecka. Aplikację można zresetować do korzystania z programu Visual Manager pakietu Office 2007, tak aby przypominała aplikację pakietu Office 2007.

Aby ustawić wygląd aplikacji

  1. CMainFrame::OnCreate W funkcji wpisz następujący kod przed instrukcjąreturn 0;, aby zmienić domyślny menedżer wizualizacji i styl.

    // Set the default manager to Office 2007
    CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007));
    CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue);
    
  2. Zapisz zmiany, a następnie skompiluj i uruchom aplikację. Interfejs użytkownika aplikacji powinien przypominać interfejs użytkownika pakietu Office 2007.

Następne kroki 

Zmodyfikowano klasyczny przykład scribble 1.0 MFC, aby użyć Projektant wstążki. Teraz przejdź do części 2.

Zobacz też

Przewodniki
Przewodnik: aktualizowanie aplikacji bazgrołów MFC (część 2)