Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
J.Matulewski,T.Dziubak,M.Sylwestrzak,R.Płoszajczak,Grafika.Fizyka.Metodynumeryczne.
Symulacjefizycznezwizualizacj
ą
3D,Warszawa2010
ISBN978-83-01-16178-1,©byWNPWN2010
24
CzęśćI.GrafikatrójwymiarowawOpenGL
KodfunkcjiskładowejCOkno::Initzlistingu1.6wymagaoczywiściekomenta-
rza.JejdziałanierozpoczynasięodutworzeniazmiennejtypuWNDCLASS.WNDCLASS
jeststrukturąokreślającąstylokna.Jejpolestyleokreślapodstawowewłasności
okna–wnaszymprzypadkuważnejestposiadaniewłasnegokontekstuurządzenia
odpowiedzialnegozawyświetlanie(kartygraficznej),copozwalanamodyfikowanie
parametrówwyświetlaniawoknie.OdpowiadazatoparametrCS_OWNDCprzypisany
dopolastyle.Kolejnąkluczowąsprawąjestwskazaniefunkcjiodpowiedzialnejza
obsługękomunikatówadresowanychdookna.Wnaszymprojekciejestniąoczywi-
ściefunkcjaWndProc.Sprawami,możemniejistotnymi,aleważnymizpunktuwidze-
niaużytkownikaaplikacji,jestwybórkursoraiikonyaplikacji.Kursormożemy
wybraćzzestawukursorówdostępnychwWindows.Ikonapowinnanatomiastbyć
umieszczonawzasobachaplikacjiistamtądpobrana.AbynieodciągaćuwagiCzytel-
nikaodsprawzwiązanychzOpenGL,wopisywanymprojekciezrezygnowałem
zokreślaniawłasnejikony,przypisującpoluhIconwartośćNULL.Dysponującopisem
oknawpostaciinstancjistrukturyWNDCLASS,możemytenopis(klasęokna)zareje-
strować.Zarejestrowanąklasęoknamożemywskazaćwmomencietworzeniaokna
(pierwszyargumentfunkcjiCreateWindow,drugifunkcjiCreateWindowEx).Pozostaje
zatemutworzyćoknoipokazaćjenaekranie(funkcjaShowWindow).Tworzącokno,
możnaokreślićjegododatkowewłasności.WparametrzedwStylefunkcjiCreate-
WindownależypodaćwartośćWS_OVERLAPPEDWINDOW.Dziękitemuoknobędziemiało
wyglądtypowegooknaWindows(pasektytułu,brzegi,ikonymaksymalizacjiimini-
malizacji).
ZwróćmyjeszczeuwagęnapętlęwhilewidocznąwfunkcjiskładowejCOk-
no::Run.Jesttotzw.pętlagłównaaplikacjiodpowiedzialnazaodbióriprzekazy-
waniekomunikatówadresowanychdoaplikacji.FunkcjaGetMessageodbierająca
komunikatyzwracaniezerowąwartośćdlawszystkichkomunikatówpozaWM_QUIT.
Wefekcieodebranietegoostatniegospowodujezakończeniedziałaniaaplikacji.
Wpunkcie15.zadbaliśmy,abytakikomunikatzostałprzesłanydoaplikacjiwmo-
menciezamknięciaokna.
DlawygodyzdefiniujmyjeszczedwachronionepolaklasyCOknoprzechowujące
informacjeowielkościobszaruużytkownika,tj.obszarudostępnegodorysowania
(taczęść,którajestwtejchwilipusta).Towtymobszarzewyświetlaćbędziemy
grafikę3D.
1.ZdefiniujmyzatemwklasieCOknopolaszerokoscObszaruUzytkownikaiwyso-
koscObszaruUzytkownikatypulong.
2.NastępniedodajmydofunkcjiskładowejCOkno::WndProcsekcjęcaseodpowie-
dzialnązaaktualizacjęwartościtychpólwraziezmianyrozmiaruokna(listing
1.10):