8.38. Tworzenie własnego AppWizarda.txt

(53 KB) Pobierz
Rozdzia� 38.
Tworzenie w�asnego AppWizarda


W tym rozdziale:

Spos�b dzia�ania AppWizarda
Wielo�cie�kowe kreatory
S�ownik AppWizarda
Tworzenie w�asnego AppWizarda ustawiaj�cego domy�lne opcje projektu
Tworzenie w�asnego AppWizarda do��czaj�cego do projektu spersonalizowane okno dialogowe O...
Dodawanie w�asnych okien dialogowych do AppWizarda
Modyfikowanie wzorc�w w celu dostosowania szkieletu aplikacji
Dyrektywy AppWizarda
Zmiana okna dialogu potwierdzenia
U�ycie Rejestru do przechowywania ustawie� AppWizarda


Jednym z najbardziej u�ytecznych narz�dzi Visual Studia jest kreator AppWizard, pomagaj�cy w tworzeniu nowych projekt�w. W terminologii Windows kreator jest aplikacj� przedstawiaj�c� seri� okien dialogowych, prowadz�cych u�ytkownika przez proces wykonywania okre�lonego zadania. Podobnie, AppWizard daje programistom mo�liwo�� definiowania serii okien dialogowych dla wybranego typu projektu. Ka�de okno dialogowe zawiera opcje specyficzne dla konkretnego typu projektu. Na przyk�ad, tworz�c za pomoc� AppWizarda bibliotek� DLL dla Windows, pierwsze okno dialogowe pozwala programi�cie na wybranie opcji takich jak rodzaj tworzonej biblioteki (zwyk�a czy rozszerzenie MFC), wsparcie dla automatyzacji czy zastosowanie komentarzy w plikach �r�d�owych.
Gdy okna dialogowe zostan� ju� wype�nione, AppWizard tworzy pliki startowe konieczne do zbudowania projektu. Do plik�w startowych nale�� plik projektu, plik przestrzeni roboczej, pliki �r�d�owe, pliki nag��wkowe, pliki zasob�w itd. Jednak mimo i� by�o to
jedno z najcz�ciej u�ywanych narz�dzi wspomagaj�cych, AppWizard mia� jedn� powa�n� wad�, a mianowicie to, �e z jego pomoc� mo�na by�o tworzy� jedynie projekty zawarte na statycznej li�cie wcze�niej zdefiniowanych projekt�w. Pocz�wszy od czwartej wersji Visual C++ wszystko si� jednak zmieni�o i teraz istnieje mo�liwo�� tworzenia w�asnych kreator�w AppWizard.
W�asne AppWizardy s� przydatne, gdy tworzy si� wiele projekt�w o podobnej strukturze i tak jak w przypadku kreator�w wbudowanych w Visual Studio w�asne kreatory s�u�� tworzeniu og�lnych szkielet�w aplikacji, zawieraj�cych te same pocz�tkowe elementy. Na przyk�ad, je�li zauwa�y�e�, �e ca�y czas tworzysz aplikacje MFC SDI korzystaj�ce z automatyzacji, mo�esz stworzy� w�asnego AppWizarda z domy�lnie ustawionymi odpowiednimi opcjami. W ten spos�b redukujesz czas wymagany do tworzenia standardowo u�ywanego projektu i eliminujesz mo�liwo�� pomini�cia kt�rej� z potrzebnych opcji.
W�asne AppWizardy mog� by� u�ywane tak�e do modyfikowania kodu stworzonego przez wbudowanego AppWizarda. Za��my, �e chcesz, by wszystkie tworzone przez ciebie projekty zawiera�y okno dialogowe O programie, wy�wietlaj�ce znak firmowy firmy i informacje kontaktowe. Dzi�ki w�asnemu AppWizardowi mo�esz to �atwo osi�gn��. Mo�esz nawet zdefiniowa� i wy�wietli� nowe, dostosowane okna dialogowe, kt�re zostan� wy�wietlone podczas dzia�ania w�asnego AppWizarda. To, w jaki spos�b dzia�a AppWizard i w jaki spos�b mo�na tworzy� w�asne AppWizardy, stanowi w�a�nie temat tego rozdzia�u.
Gdy poznasz ju� zasad� dzia�ania AppWizarda, zaprezentujemy w�asnego, demonstracyjnego AppWizarda. Ta pierwsza demonstracja pos�u�y ilustracji tego, w jaki spos�b mo�na ustawi� domy�lne opcje projektu. W drugim demonstracyjnym kreatorze zobaczysz, w jaki spos�b mo�na stworzy� w�asnego AppWizarda wy�wietlaj�cego niestandardowe okno dialogowe w celu pobrania potrzebnych informacji. Pobrane informacje b�d� nast�pnie wykorzystane do stworzenia definicji okna dialogowego O programie, kt�re b�dzie zawiera� opis aplikacji i informacje kontaktowe. Okno dialogowe O programie b�dzie zawiera� nawet przycisk polecenia, s�u��cy do przeniesienia u�ytkownika na wybran� przez ciebie stron� WWW.
Dzia�anie AppWizarda
Zanim stworzysz w�asnego AppWizarda, musisz zrozumie� zasad� dzia�ania AppWizarda wbudowanego w Visual Studio. Po�wi��my chwil� i dok�adnie przyjrzyjmy si� procesowi tworzenia projektu na podstawie wybranych opcji.
Mened�er AppWizarda
Gdy tworzysz w�asnego AppWizarda, nie dzia�a on jako samodzielna aplikacja, ale jako procedura w ramach Visual Studia. W rzeczywisto�ci sterowaniem wykonania r�nych AppWizard�w zarz�dza �mened�er" AppWizarda, biblioteka MFCAPWZ.DLL. Po otwarciu okna dialogowego New i klikni�ciu zak�adk� Projects, pojawia si� lista predefmiowanych
typ�w projekt�w. Na tej li�cie wyst�puj� tak�e wszelkie w�asne AppWizardy, kt�re zosta�y dodane do Yisual Studia. Aby w�asny AppWizard znalaz� si� na li�cie, musi posiada� rozszerzenie .AWX\ musi znajdowa� si� w okre�lonym folderze.
Je�li podczas instalacji Yisual C++ 6.0 zaakceptujesz domy�lne kartoteki, pliki wszystkich w�asnych kreator�w AppWizard powinny si� znale�� w kartotece \Program Files\Microsoft Yisual Studio\Common\msdev98\Template. Rysunek 38.1 przedstawia przyk�ad okna dialogowego New w Yisual Studiu. Zwr�� uwag� na dwie pozycje, �MFC AppWizard (exe) - About box" oraz �MFC AppWizard (exe) - SDI/Automation". S� to dwa w�asne kreatory AppWizard, opisywane w tym rozdziale jako przyk�ady. Jak wida�, te w�asne kreatory s� automatycznie wy�wietlane razem ze standardowymi kreatorami Yisual C++.
S�ownik oraz klasa CCustomAppWiz
Klasa bazowa CCustomAppWiz zapewnia us�ugi komunikacyjne pomi�dzy bibliotek� MFCAPWZ.DLL a w�asnym AppWizardem. Implementacja funkcji sk�adowej Ccustom-AppWiz (} znajduje si� w pliku MFCAPWZ.DLL. Aby zaimplementowa� zachowanie specyficzne dla aplikacji, musisz jedynie wyprowadzi� klas� z klasy CCustomAppWiz, przes�oni� w�a�ciwe sk�adowe funkcje wirtualne i zarejestrowa� podczas dzia�ania programu wyprowadzon� klas� w bibliotece MFCAPWZ.DLL (wywo�uj�c funkcj� SerCustomApp-WizClassO).
Jak ju� wspominali�my, AppWizard prezentuje seri� okien dialogowych w celu pobrania informacji niezb�dnych do stworzenia nowego projektu. W trakcie prezentacji dialog�w i ustawiania kolejnych opcji AppWizard zachowuje je w mapie �a�cuch�w. Ta mapa �a�cuch�w jest nazywana s�ownikiem (ang. Dictionary). S�ownik to w rzeczywisto�ci zmienna sk�adowa klasy CCustomAppWiz o nazwie m_Dictionary, nale��ca do typu CMapStringTostring. S�ownik odwzorowuje makra AppWizarda na odpowiadaj�ce im warto�ci. Makro jest nazw� opcji lub ustawienia projektu. Na przyk�ad, przy tworzeniu aplikacji MFC masz do dyspozycji opcj� powoduj�c� utworzenie aplikacji SDI. W zwi�zku z tym s�ownik zawiera makro o nazwie PROJTYPE_SDI. Je�li projekt ma by� aplikacj� SDI, warto�ci� tej pozycji w s�owniku b�dzie 1. W przeciwnym razie warto�ci� przypisan� makru b�dzie 0.
Zmienna sk�adowa m_Dictionary mo�e by� u�yta do tworzenia lub usuwania makr albo do aktualizowania ich warto�ci. Poniewa� ta zmienna sk�adowa jest obiektem typu CMapStringTostring, do pobierania warto�ci r�nych makr mo�na u�y� znanych ju� nam funkcji sk�adowych. Poni�szy kod zwraca warto�� makra PROJTYPE_SDI, kt�r� mo�na wykorzysta� do sprawdzenia, czy projekt ma sta� si� aplikacj� SDI:

m_Dictionary.Lookup("PROJTYPE__SDI", m_strProjType) ;
if(_TX("l") == m_strProjType)
{
// aplikacja SDI }
else {
//   aplikacja   innego  typu }

O ile standardowe makra s� dostarczane przez bibliotek� MFCAPWZ.DLL, o tyle dodatkowe makra wymagane przez w�asne AppWizardy s� dodawane do s�ownika za pomoc� funkcji sk�adowej SetAto. Pe�n� list� ponad sze��dziesi�ciu standardowych makr znajdziesz w dokumentacji dostarczonej wraz z Visual C++. W drugim programie demonstracyjnym w tym rozdziale poka�emy, w jaki spos�b mo�na tworzy� nowe makra w celu wy�wietlenia informacji we w�asnych oknach dialogowych.
Gdy programista kliknie przycisk Finish w oknie AppWizarda, biblioteka MFCAPWZ.DLL wykorzystuje s�ownik do stworzenia plik�w nowego projektu. Ka�dy AppWizard (standardowy i w�asny) posiada zestaw plik�w wzorcowych, u�ywanych do tworzenia takiego projektu, jaki zosta� przypisany temu AppWizardowi. Warto�ci w s�owniku s� u�ywane w po��czeniu z plikami wzorcowymi w celu stworzenia ostatecznego projektu (nowych plik�w projektu). Oto przyk�ad. Wzorcowy plik zasob�w dla pliku zasob�w angloj�zycznej wersji aplikacji opartej na oknie dialogowym ma nazw� DlgLoc_enu.rc. Oto fragment tego pliku:
...
IDD_ABOUTBOX_DIALOGEX O, O, 160, 129
STYLE DSJMODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "About $$ROOT$$"
...
Zwr�� szczeg�ln� uwag� na u�ycie w przyk�adzie napisu $$ROOT$$. Gdy MFCAPWZ.DLL tworzy pliki nowego projektu, najpierw przegl�da ka�dy z plik�w wzorcowych, szukaj�c �a�cuch�w rozpoczynaj�cych si� od przedrostka �$$" i ko�cz�cych si� przyrostkiem �$$". �a�cuch tekstowy pomi�dzy przedrostkiem a przyrostkiem jest nazywany miejsce wstawienia. Ka�de miejsce wstawienia jest u�ywane jako nazwa makra do pobrania ze s�ownika. Biblioteka MFCAPWZ.DLL szuka w s�owniku warto�ci odpowiadaj�cej miejscu wstawienia i je�li j� znajdzie, zast�puje ni� ca�e miejsce wstawienia, ��cznie z przyrostkiem i przedrostkiem. Gdy miejsca wstawienia zostan� zast�pione odpowiednimi napisami ze s�ownika, zostaje utworzony nowy plik. Rysunek 38.2 pokazuje spos�b wykorzystania s�ownika przez bibliotek� MFCAPWZ.DLL przy tworzeniu nowego projektu.
T
Rozdzia� 38. � Tworzenie w�asnego AppWizarda
1093
Rys. 38.2.
Przy tworzeniu plik�w projektu biblioteka MFCAPWZ.DLL u�ywa warto�ci ze s�ownika do zast�pienia miejsc wstawiania we wzorcowych plikach
WARTO�CI PODSNE PRZEZ PROGRAMIST�

Okna dialogowe AppWizarda(
(czytaj poni�ej)

AppWizard zawiera
s�ownik nazw makr
i odpowiadaj�cych
im warto�ci. Ten
s�ownik jest u�ywany
do tworzenia plik�w
kodu �r�d�owego na
podstawie plik�w
wzorcowych
oraz warto�ci
wprowadzonych
przez programist�
w kolejnych oknach
AppWizarda
$$ FUNCTION
{
}

Wzorcowe pliki
(czt.poni�ej)

foo_bar()
{
}
Utworzenie pliku kodu �r�d�owego

U�ycie biblioteki MFCAPWZ.DLL do zast�pienia miejsc wstawiania
Aby zobaczy� przyk�ad zast�powania miejsc wstawiania we wzorcowych plikach warto�ciami ze s�ownika, wykonaj poni�sze kroki:
1. Za pomoc� AppWizarda stw�rz aplikacj� opart� na oknie dialogowym. ...
Zgłoś jeśli naruszono regulamin