Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1030ModeleprogramowaniaaplikacjiUWP
23
Podobniejakwdwóchpoprzednichpodrozdziałach,poutworzeniuprojektu
zwykorzystaniemtegoszablonudefnicjainterfejsuużytkownikagłównejstrony
aplikacjiznajdujesięwplikuMainPage.xaml.Natomiastjejlogikęimplementują
terazdwapliki:MainPage.xaml.horazMainPage.xaml.cpp.Pierwszyznichjestpli-
kiemnagłówkowym.ZawieraondeklaracjęklasyMainPage,którejimplementacja
znajdujesięwdrugimzwymienionychplików,MainPage.xaml.cpp.
Analogiczniejakwpoprzednimpodrozdzialedefnicjainterfejsuużytkownikanie
wymagawieluzmian,ajedynieodpowiedniejkonfguracjiatrybutów
x:Class
oraz
xmlns:local
znacznika
Page
(listing1.5).Zupenieinaczejwyglądaimplementacja
logikigłównegowidokuaplikacji,gdyżnajejstrukturęskładająsięterazdwapliki
(listing1.6i1.7).Wszczególnościkażdametodaklasy
MainPage
musizostaćwcześ-
niejzadeklarowanawplikunagłówkowym(listing1.6).Ponadtomożnawyszczegól-
nićkilkadodatkowychróżnicwstosunkudoimplementacjiwykorzystującejjęzyki
C#iVB.Mianowicie,wprzypadkuinterfejsuUWPdlaprogramistówC++klasy
implementująceinterfejs
IList
zamiastmetody
Add
udostępniająmetodę
Append
.
Wzwiązkuztymwceludodaniakomenddooknadialogowego,atakżeprezentacji
odpowiedziużytkownikawkontrolcetypu
ListBox
wykorzystanometodę
Append
(listing1.7)zamiastfunkcjiAdd.
Kolejnyaspektdotyczącypowyższegoprzykładu,którywymagadłuższegoko
-
mentarza,totworzenieinstancjiklasyMessageDialog.Dotegoceluzostałowy-
korzystanesłowokluczowerefnew.Wynikatozfaktu,żeklasaMessageDialog
jesttypemreferencyjnym.Ponadtowkodziezlistingów1.6i1.7wwielumiejscach
pojawiasięoperator
^
,nazywanykapeluszemlubdaszkiem.Stanowioninteligentny
wskaźnik.Wskazywaneprzezniegofragmentypamięciautomatyczniezwalniane
wprzypadku,gdyodpowiedniejzmiennejprzypiszesięwartość
nullptr
lubgdy
zmiennataprzestajebyćaktywnawdanymzasięgu.Innymisłowy,wtakichprzy-
padkachnastępujeautomatyczneodśmiecaniepamięcijesttozatemmechanizm
całkowicieodmiennyodznanychzestandardowegojęzykaC++,wktórymtopro-
gramistasamodzielniemusizadbaćozwolnienieodpowiednichzakresówpamięci.
Listing1.5.FragmentplikuMainPage.xamlprojektuHelloWorldCpp
<Page
x:Class="HelloWorldCpp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:HelloWorldCpp"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/&
markup-compatibility/2006"
mc:Ignorable="d">
<!--DalszaczęśćidentycznajakwListingach1.1i1.2-->