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
W pliku scribble.cpp sprawdź, czy
CScribbleApp::InitInstance
zawiera wywołanie elementu AfxOleInit.Dodaj następujący kod do pliku pch.h (stdafx.h w programie Visual Studio 2017 i starszych wersjach):
#include <afxcontrolbars.h>
W pliku scribble.h zmodyfikuj
CScribbleApp
definicję klasy, aby pochodziła z klasy CWinAppEx.class CScribbleApp: public CWinAppEx
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
instrukcjiLoadStdProfileSettings()
.SetRegistryKey(_T("MFCNext\\Samples\\Scribble2")); SetRegistryBase(_T("Settings"));
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
CMDIFrameWndEx
wszystkie odwołania doCMDIFrameWnd
.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ągiemCSplitterWndEx
.Zmodyfikuj paski narzędzi i paski stanu, aby używać nowych klas MFC.
W pliku mainfrm.h:
Zamień
CToolBar
naCMFCToolBar
.Zamień
CStatusBar
naCMFCStatusBar
.
W pliku mainfrm.cpp:
Zastąp ciąg
m_wndToolBar.SetBarStyle
ciągiemm_wndToolBar.SetPaneStyle
Zastąp ciąg
m_wndToolBar.GetBarStyle
ciągiemm_wndToolBar.GetPaneStyle
Zastąp ciąg
DockControlBar(&m_wndToolBar)
ciągiemDockPane(&m_wndToolBar)
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);
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
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:Skopiuj plik main.bmp do projektu Scribble.
Skopiuj plikimall.bmp i filelarge.bmp do projektu Scribble.
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.
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.
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
.Zaimportuj mapy bitowe dla menu pliku dołączonego do przycisku Aplikacja .
- 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.
- Zaimportuj pliklarge.bmp zawierający dziewięć obrazów 32x32 (32x288). Zmień identyfikator mapy bitowej na
IDB_RIBBON_FILELARGE
.
- Zaimportuj plik filesmall.bmp zawierający jedenaście obrazów 16x16 (16x176). Zmień identyfikator mapy bitowej na
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.
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
.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
.
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.
- 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.
- 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
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
Po wybraniu projektu Scribble w Eksplorator rozwiązań w menu Projekt kliknij pozycję Dodaj zasób.
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.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.
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 dof
, Duże obrazy naIDB_RIBBON_FILELARGE
i Małe obrazy naIDB_RIBBON_FILESMALL
.IDB_RIBBON_MAIN
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.
Po wybraniu przycisku Typ elementu kliknij przycisk Dodaj, aby dodać przycisk. Zmień wartość Caption na , ID na
ID_FILE_NEW
, Image na&New
, Image Large na0
0
.Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na
&Save
ID_FILE_SAVE
, Image na2
, i Image Large na2
.Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na
Save &As
ID_FILE_SAVE_AS
, Image na3
, i Image Large na3
.Kliknij przycisk Dodaj , aby dodać przycisk. Zmień wartość Caption na , ID na
&Print
ID_FILE_PRINT
, Image na4
, i Image Large na4
.Zmień typ elementu na Separator, a następnie kliknij przycisk Dodaj.
Zmień typ elementu na Przycisk. Kliknij przycisk Dodaj , aby dodać piąty przycisk. Zmień wartość Caption na , ID na
&Close
ID_FILE_CLOSE
, Image na5
, i Image Large na5
.
Poniższe modyfikacje tworzą podmenu pod przyciskiem Drukuj utworzonym w poprzednim kroku.
Kliknij przycisk Drukuj, zmień typ elementu na Etykieta, a następnie kliknij przycisk Wstaw. Zmień podpis na
Preview and print the document
.Kliknij przycisk Drukuj, zmień typ elementu na Przycisk, a następnie kliknij przycisk Wstaw. Zmień wartość Caption na , ID na
&Print
ID_FILE_PRINT
, Image na4
, i Image Large na4
.Kliknij przycisk Drukuj, a następnie kliknij przycisk Wstaw, aby dodać przycisk. Zmień wartość Caption na , ID na
&Quick Print
ID_FILE_PRINT_DIRECT
, Image na7
, i Image Large na7
.Kliknij przycisk Drukuj, a następnie kliknij przycisk Wstaw, aby dodać kolejny przycisk. Zmień wartość Caption na , ID na
Print Pre&view
ID_FILE_PRINT_PREVIEW
, Image na6
, i Image Large na6
.Teraz zmodyfikowano elementy główne. Kliknij przycisk Zamknij , aby zamknąć Edytor elementów.
Poniższa modyfikacja powoduje utworzenie przycisku zakończenia wyświetlanego w dolnej części menu przycisku Aplikacja .
Wybierz kartę Widok zasobów w Eksplorator rozwiązań.
W oknie Właściwości kliknij wielokropek (...) obok pozycji Przycisk, aby otworzyć Edytor elementów.
Po wybraniu przycisku Typ elementu kliknij przycisk Dodaj, aby dodać przycisk. Zmień wartość Caption na , ID na
E&xit
, Image naID_APP_EXIT
8
.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
W pliku mainfrm.h dodaj składową danych do chronionej
CMainFrame
sekcji , definicję klasy dla ramki głównej. Ten element członkowski jest przeznaczony dla paska wstążki.// Ribbon bar for the application CMFCRibbonBar m_wndRibbonBar;
W pliku mainfrm.cpp dodaj następujący kod przed końcową
return
instrukcją na końcuCMainFrame::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
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_HOMELARGE
IDB_RIBBON_HOMESMALL
.&Home
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
.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ślClear 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 naID_EDIT_CLEAR_ALL
Clear All
, Image Index na , Large Image Index na0
0
.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
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);
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)