You are on page 1of 14

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE

C++BuilderX.
wiczenia
Autor: Mariusz Owczarek
ISBN: 83-7361-676-4
Format: B5, stron: 128

ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

C++BuilderX to narzdzie, ktre ma umoliwi tworzenie aplikacji w jzyku C++


dla rnych platform systemowych. Na wszystkich platformach wygld jego interfejsu
jest identyczny, co bardzo uatwia prac. Narzdzie to, poza moliwoci tworzenia
aplikacji w sposb wizualny, udostpnia programistom rwnie rozbudowany edytor
kodu rdowego oraz edytor HTML i XML. C++BuilderX staje si coraz popularniejszym
rodowiskiem do tworzenia aplikacji wieloplatformowych.
C++BuilderX. wiczenia to ksika dla tych, ktrzy chc pozna to narzdzie
i nauczy si podstaw programowania z uyciem C++BuilderX. Dziki zawartym
w niej wiadomociom dowiesz si, jak korzysta ze rodowiska wizualnego i jak
stworzy proste programy dla systemw Windows i Linux.
Podstawy korzystania z C++BuilderX
Podstawowe wiadomoci o C++
Aplikacje uruchamiane z poziomu konsoli
Tworzenie aplikacji z interfejsem graficznym
Korzystanie z rnych kompilatorw

Spis treci
Wstp.................................................................................................................................................................5
Rozdzia 1.

Pierwsze kroki w rodowisku C++BuilderX...................................................................................7


Co jest potrzebne, aby korzysta z C++BuilderX?...................................................... 7
Pierwsze spotkanie z C++BuilderX............................................................................. 8
Menu i paski narzdzi.................................................................................................. 8
Okna .......................................................................................................................... 10
Podsumowanie........................................................................................................... 14

Rozdzia 2. Aplikacje konsolowe ..............................................................................................................................15


Oglna posta programu pisanego w C++.................................................................... 15
Dyrektywy ................................................................................................................. 17
Dyrektywa #include ............................................................................................. 17
Dyrektywa #define............................................................................................... 18
Dyrektywa #if kompilacja warunkowa ........................................................... 19
Typy zmiennych ........................................................................................................ 19
Zmienne typu int .................................................................................................. 20
Zmienne typu float............................................................................................... 20
Typ double ........................................................................................................... 21
Typ char ............................................................................................................... 21
Modyfikatory typw ............................................................................................ 21
Rzutowanie (konwersja) typw............................................................................ 22
Typ wyliczeniowy................................................................................................ 23
Operatory................................................................................................................... 24
Zapis danych do plikw i odczyt z nich za pomoc operatora << i >>................ 26
Wskaniki .................................................................................................................. 28
Tablice ....................................................................................................................... 30
Operatory new i delete............................................................................................... 32
Instrukcje ................................................................................................................... 33
Instrukcje selekcji (wyboru)................................................................................. 34
Instrukcje iteracyjne............................................................................................. 37
Funkcje ...................................................................................................................... 42
Przecianie funkcji ............................................................................................. 43
Niejednoznaczno .............................................................................................. 45
Przekazywanie argumentw przez warto i adres .............................................. 46
Wskaniki do funkcji ........................................................................................... 49

C++BuilderX. wiczenia

Funkcja main()........................................................................................................... 50
Przekazywanie parametrw do funkcji main()..................................................... 50
Struktury i unie .......................................................................................................... 52
Struktury .............................................................................................................. 52
Unie...................................................................................................................... 54
Klasy.......................................................................................................................... 55
Konstruktory i destruktory ................................................................................... 57
Przeadowywanie konstruktorw ......................................................................... 59
Dziedziczenie....................................................................................................... 60
Przecianie operatorw ...................................................................................... 64
Wyjtki ...................................................................................................................... 66
Podsumowanie........................................................................................................... 69

Rozdzia 3. Aplikacje okienkowe ...............................................................................................................................71


Wstp......................................................................................................................... 71
Pierwszy program GUI funkcja WinMain() ............................................................. 72
Gwne okno aplikacji............................................................................................... 76
Podstawy obsugi kontrolek....................................................................................... 81
Kalkulator .................................................................................................................. 84
Najprostszy edytor tekstu .......................................................................................... 88
Ulepszamy edytor ...................................................................................................... 93
Rysowanie w oknie aplikacji ..................................................................................... 96
Odtwarzanie dwiku z plikw .wav......................................................................... 99
Podsumowanie......................................................................................................... 103

Rozdzia 4. Zarzdzanie definicjami obiektw w C++BuilderX..............................................................105


Class browser........................................................................................................... 105
Okno Structure View ............................................................................................... 110
Podsumowanie......................................................................................................... 112

Rozdzia 5. Uytkowanie kilku kompilatorw i projekty makefile........................................................113


Kompilacja warunkowa ........................................................................................... 115
Opcje linii komend .................................................................................................. 116
Konfiguracje budowy aplikacji................................................................................ 117
Konfiguracje Debug Build i Release Build........................................................ 117
Wasne konfiguracje budowy aplikacji.............................................................. 118
Dodawanie wasnych kompilatorw do rodowiska................................................ 119
Budowanie aplikacji ze zbiorw makefile.................................................................. 123
Podsumowanie......................................................................................................... 125

Literatura.....................................................................................................................................................127

3.
Aplikacje okienkowe
Rozdzia

Wstp
C++BuilderX w przeciwiestwie do C++Buildera 6 nie zawiera elementw VCL. Jestemy
wic zmuszeni pisa programy z GUI przy uyciu WinAPI. Ma to swoje dobre strony,
poniewa pozwala na lepsz optymalizacj kodu, ale jednoczenie zwiksza ilo czasu
i pracy potrzebnej do napisania aplikacji. W pierwszej wersji BuilderaX przewidziane jest
pisanie aplikacji GUI tylko pod systemem Windows. Dodatkowym utrudnieniem jest brak
moliwoci tworzenia menu i okien dialogowych w plikach zasobw. Edytor menu i okien
dialogowych pojawi si zapewne w drugiej wersji BuilderaX. Tak naprawd moliwe jest
pisanie programw GUI rwnie pod Linuksem, ale naley si w tym celu posuy ktrym
z narzdzi uatwiajcych to zadanie. Takim narzdziem jest m.in. pakiet GTK++ dostpny
na licencji open source.
Poniewa w drugiej wersji opcja projektw GUI prawdopodobnie bdzie dostpna take
pod Linuksem, zdecydowaem si nie opisywa tu GTK++ ani innego tego typu pakietu, ale
poczeka na rozwizanie zaproponowanie przez firm Borland. Jeeli bdziesz, Czytelniku, zainteresowany rodowiskiem GTK, to na stronie projektu (www.gtk.org) znajdziesz obszerne opisy i tutoriale. Mona si z nich nauczy pracy z t bibliotek od samych
podstaw do skomplikowanych aplikacji.
Mam nadziej, e take dla Windows ewolucja programu pjdzie w kierunku jakiej formy
biblioteki VCL, ktra jednak bardzo uatwia prac.
Na zakoczenie wstpu kilka sw o wiczeniach w tym rozdziale. Poniewa aplikacje
w WinAPI s dosy dugie, nie jest moliwe napisanie ich w jednym wiczeniu. Dlatego
ten rozdzia podzielony jest na podrozdziay opisujce jedn aplikacj (edytor, kalkulator itd.). Wszystkie wiczenia w danym podrozdziale odnosz si do tego samego kodu
rdowego, aplikacja jest rozwijana w kolejnych podpunktach.

72

C++BuilderX. wiczenia

Pierwszy program GUI funkcja WinMain()


wiczenie 3.1.

Aby stworzy projekt, ktrego wynikiem ma by aplikacja okienkowa:


1. Wybieramy z menu File opcj New i w oknie Object Gallery wybieramy New GUI

Application. Pojawi si kreator projektw GUI.


2. Pierwszym krokiem jest wpisanie nazwy projektu i katalogu, w ktrym zostan
utworzone pliki programu. W polu nazwy pliku wpiszmy , a nastpnie

kliknijmy Next>.
3. Teraz naley wybra platform, na ktrej bdzie dziaa nasz projekt. Poniewa

bdzie to aplikacja WinAPI, domylnie wybrany jest Windows. Obowizuj tutaj


takie same zasady wyboru kompilatorw, jak dla programw wykonywanych
w oknie konsoli.
4. Ostatnim krokiem jest wskazanie, jakie pliki maj wej w skad projektu.

Domylnie projekt zawiera jeden plik, nazwany untitled1.cpp i zawierajcy kod


programu z funkcj 
. Jest to odpowiednik funkcji 
. Aby pik ten
zosta utworzony, musimy zaznaczy okienko w kolumnie Create obok nazwy
pliku. Klikajc na przycisk Add, moemy otworzy okno umoliwiajce doczenie
innych plikw do projektu, podobnie jak to byo w aplikacji konsolowej. Mog
to by pliki nagwkowe, z obrazami graficznymi czy binarne pliki zasobw.
Do odczania plikw od projektu suy przycisk Remove. Do naszego pierwszego
projektu wystarczy plik z kodem programu, klikamy wic opisywane wyej okienko
Create, a nastpnie Finish.
5. Piki projektu zostan utworzone w wybranym przez nas katalogu, a w oknie Project

content zobaczymy ich list. Bd to: plik projektu Hallo.cbx, plik untitled1.cpp
z kodem programu i plik Hallo.exe, ktry bdzie zawiera gotowy program
po kompilacji.

Z czego skada si projekt GUI Windows?


Kliknijmy dwukrotnie plik untitled1.cpp. Jego zawarto pojawi si w oknie kodu rdowego, a w oknie widoku struktury zobaczymy plik nagwkowy i funkcje istniejce
w programie. Na razie jedynym plikiem nagwkowym jest windows.h, a jedyn funkcj
. Plik windows.h zawiera funkcje WinAPI. Funkcja  posiada parametry
inne ni funkcja  dla aplikacji konsolowych i na niej si na chwil zatrzymamy. Oto
posta 
:

  
  
 

 !"

Pierwszy parametr, , jest uchwytem do aplikacji, ktrej czci jest dana funkcja
. Drugi parametr to uchwyt do poprzedniego uruchomienia danej aplikacji (jeeli
dwie kopie aplikacji dziaaj w tym samym momencie). W rodowisku Windows ten

Rozdzia 3.  Aplikacje okienkowe

73

parametr ma zawsze warto . Jeeli chcemy sprawdzi, czy uruchomiono wczeniej
jakie kopie programu, musimy to zrobi w inny sposb. Trzeci parametr,  , to
acuch znakowy zawierajcy argumenty przekazane do programu w linii komend przy
uruchamianiu. Ten mechanizm omwi w dalszej czci niniejszego rozdziau. Ostatni
parametr zawiera flagi okrelajce sposb wywietlania gwnego okna programu. Funkcja
 jest wywoywana przez system przy uruchamianiu aplikacji i zwykle warto
adnego z tych parametrw nie jest bezporednio zadawana przez programist.
wiczenie 3.2.

Pierwszy program GUI:


Aby nie przedua, zabierzmy si za nasz pierwszy program w WinAPI. Bdzie to proste
okno dialogowe z napisem Witaj Przygodo.
1. W funkcj  wpiszmy instrukcj:
#$ % &' ()*#  '++$,-./$,-  0- 
- /$,
.-1"2

Teraz cay listing naszego programu wyglda tak:


345! !67
388,,$-  1,,
3##4
38

  
  
 

 !"
9
#$ % &' ()*#  '++$,-./$,-  0- 
- /$,
.-1"2
4:2
;

2. Wybieramy z menu Run opcj Run Project.


3. Nastpi kompilacja, a nastpnie uruchomienie programu. Na ekranie ujrzymy nasze

okienko. Powinno wyglda tak (rysunek 3.1):


Rysunek 3.1.
Pierwszy program

Jeeli program nie uruchomi si, sprawdmy, czy kod rdowy wyglda dokadnie tak,
jak na listingu wyej.
Jeeli wszystko przebiego bez zakce, to wanie napisae i uruchomie, Czytelniku,
swj pierwszy program okienkowy w C++BuilderX.
Cho programik jest tak prosty, mona wykorzysta go do nauki dwch rzeczy. Po pierwsze, przyjrzymy si funkcji . Po drugie, poznamy mechanizm przekazywania
parametrw w linii komend przy uruchamianiu programu.
Funkcja , jak ju wiemy, tworzy okno komunikatw. Jest to proste okno wywietlajce tekst wiadomoci i dajce uytkownikowi moliwo reakcji przez nacinicie

74

C++BuilderX. wiczenia

przycisku. Mona sterowa rodzajem wywietlanych przyciskw. Po naciniciu przycisku okno znika, a funkcja zwraca odpowiedni warto w zalenoci od nacinitego
przycisku. Prototyp tej funkcji wyglda nastpujco:
#$ % 1 


%

 &
4
*"

Parametr  oznacza uchwyt do okna macierzystego, do tego okna zostanie przesany
komunikat po naciniciu przycisku. W naszym przypadku nie ma okna macierzystego,
wic ten parametr ma warto . Druga zmienna to acuch komunikatu wywietlany
w oknie.  to rwnie acuch znakowy wywietlany w pasku aplikacji. Ostatni
parametr, , to flagi okrelajce, jakie przyciski bd dostpne w oknie, jaka bdzie
ikona i sposb zachowania si okna.
wiczenie 3.3.

Aby zmieni wygld okna komunikatw:


1. Zmiemy ostatni parametr funkcji z  na  !":
#$ % &' ()*#  '++$,-. /$,-  0- 
- /$,
.-1"2

2. Po uruchomieniu programu okno ma dwa przyciski, OK i Anuluj:


3. Zamiast   #$!  wpiszmy  %&:
#$ % &' ()*#  '++$,-./$,- 
-/$,
.-1"2

4. Po kompilacji otrzymamy okno z ikon bdu krytycznego systemu. Na szczcie

to tylko ikona.
Inne moliwe wartoci flag zestawiono w tabeli 3.1 i tabeli 3.2.
Tabela 3.1. Wybr rodzaju i liczby przyciskw
Warto flagi

Przyciski

$,-.

OK

$,$-

< - 

Przerwij, Ponw prb oraz Ignoruj

$,-. 

OK oraz Anuluj

$, 
 

Ponw prb i Anuluj

$,  -

Tak oraz Nie

$,  - 

Tak, Nie i Anuluj

Tabela 3.2. Wybr rodzaju ikony z boku wiadomoci


Warto

Ikona

$,- =
-

ostrzegawczy wykrzyknik

$,-  0- 
- 
$,- 
 .

dymek informacyjny

$,- >&
-

dymek ze znakiem zapytania

$,- 
-

bd krytyczny

Rozdzia 3.  Aplikacje okienkowe

75

Sposb zachowania si okna dialogowego:


 !&&'! Okno macierzyste komunikatu pozostaje nieaktywne, dopki
uytkownik nie wybierze jednego z przyciskw.
 %(%"'! Tak samo jak !&&'!. Dodatkowo okno komunikatu jest
zawsze na pierwszym planie. Ta opcja ma zastosowanie do wanych komunikatw,
wymagajcych natychmiastowej uwagi uytkownika.
 !% '! Tak samo jak !&&'!, ale jeeli parametr  wynosi ,
zostan zablokowane wszystkie okna aplikacji, a nie tylko macierzyste.
Zachcam do eksperymentowania z flagami i obserwacji, jak bdzie si zmienia okno
dialogowe.
wiczenie 3.4.

Uruchomienie programu w C++BuilderX z przekazywaniem argumentw z linii komend:


1. Zmiemy program tak, aby w oknie wiadomoci wywietla si parametr przekazany

w linii komend. Jak ju pisaem, parametry te s przekazywane w parametrze


  funkcji . Wystarczy wic podstawi ten parametr za zmienn
 funkcji :
#$ % &''$,-./$,-  0- 
- /$,
.-1"2

2. Aby nakaza uruchamianie aplikacji z dodatkow zmienn, wchodzimy w menu

Run i wybieramy opcj Configurations.


3. Ukae si okno Project Properties, wybieramy zakadk Run (jest ona wybrana

domylnie). W oknie Runtime configurations powinna by zaznaczona konfiguracja


dla naszej aplikacji Hello.
4. Klikamy przycisk Edit. Pojawi si okno edycji konfiguracji.
5. Znajdujemy okno Command line argument i wpisujemy tam cokolwiek.

Pogram bdzie uruchamiany z argumentem, jaki tam wpisalimy.


6. Nastpnie klikamy OK i znowu OK, a nastpnie kompilujemy i uruchamiamy

program tak jak wczeniej.


7. Tekst wpisany jako argument pojawi si w oknie wiadomoci. Warto zwrci uwag

na dolne okno pokazujce proces kompilacji. Podczas dziaania programu bdzie tam
komenda uruchamiajca nasz program wraz z argumentem.
Wejdmy jeszcze raz w menu Run\Configurations. Runtime configurations to wygodne
narzdzie do testowania rnych opcji uruchamiania programu. Zamiast zmienia istniejc konfiguracj, moemy doda now przyciskiem New. Kada konfiguracja moe
mie inne opcje. Gdy mamy wicej ni jedn konfiguracj, program zostanie uruchomiony w tej, przy ktrej zaznaczymy okienko w kolumnie Default. Do tego narzdzia
wrcimy jeszcze w dalszych przykadach.
W nastpnym podrozdziale napiszemy gwne okno aplikacji z prawdziwego zdarzenia.
Bdzie ono baz do umieszczania rnych komponentw.

76

C++BuilderX. wiczenia

Gwne okno aplikacji


Nasz pierwszy program skada si tylko z jednego okna dialogowego. Teraz napiszemy
pierwsz prawdziw aplikacj, a raczej jej okno gwne. Aplikacja Windows skada si
z okien, midzy ktrymi przesyane s komunikaty. Gwne okno aplikacji otrzymuje komunikaty z systemu i odpowiednio na nie reaguje. Z oknem zwizana jest tzw. funkcja
zwrotna (ang. callback function), do ktrej przekazywane s komunikaty. Zawiera ona
procedury obsugi tych komunikatw w zalenoci od ich treci.
Okno jest obiektem klasy '!%%. Podczas tworzenia nowego okna musimy wygenerowa nowy obiekt. Najpierw zadamy odpowiednie wartoci skadowych klasy. W naszym
przykadzie nazwiemy j )*. Postaram si maksymalnie krtko objani skadowe
tej klasy. To wiczenie bdzie troch przydugie, ale pniej bdzie nam ju atwiej.
Wszystkie linie listingu wpisujemy w funkcj 
.
wiczenie 3.5.

Aby utworzy gwne okno aplikacji:


1. Pierwsza linia to deklaracja obiektu klasy '!%%. Druga to ustawienie skadowej
.
1# !, ? 2
# !, ? 6*@, 1  /,A 1  2

 %$"'$! oznacza, e okno bdzie rysowane od nowa przy zmianie jego


szerokoci.
 %+$"'$! zapewnia rysowanie okna przy zmianie wysokoci.
2. Skadowa ,&- wskazuje na funkcj, ktra bdzie przetwarza komunikaty
nadsyane do okna. Zostan one przesane do funkcji (nazywanej tutaj .)#*/),

a w niej umiecimy procedury do ich obsugi.


# !, ? 68  @< !04?(2

Pierwowzorem tej funkcji jest )&- (linii podanej poniej nie wpisujemy
do programu):
 &
$.  !  1!&
4#  ! "2

Komunikat przekazywany jest poprzez zmienn  tej funkcji. W programie


moemy nada jej dowoln nazw. Mimo, e nie deklarujemy tego jawnie, program
bdzie zakada, e funkcja typu $"%0!! , ktrej adres znajduje si w zmiennej
,&-, ma takie same parametry jak )&-, a tylko inn nazw. Definicje
naszej funkcji zwrotnej wpiszemy zaraz po plikach nagwkowych, przed 
.
 &
$.< !04?( 1!&
#  ! "
9
418  ! !#!"2
;

Na razie bdzie ona zwracaa warto funkcji ',)&-. Jest to domylna


warto zwracana przez funkcj zwrotn.

Rozdzia 3.  Aplikacje okienkowe

77

3. Przenosimy si z powrotem do wntrza 


. Skadowa 1"- zawiera
liczb dodatkowych bajtw dodanych do kadej klasy, a 1"- liczb

dodatkowych bajtw dodanych do kadej dziaajcej kopii okna. Obie te wartoci


ustawiamy na zero.
# !, ? 6B%@# !, ? 6B %@:2

4.  wskazuje na uchwyt do aplikacji, ktrej czci jest dane okno.


W naszym przypadku uchwyt ten znajduje si w zmiennej  .
# !, ? 6@,2

5. Nastpna skadowa okrela ikon widoczn w pasku aplikacji. Ta skadowa musi

by inicjalizowana uchwytem do ikony.


# !, ? 6 @   &1,
- "2

Tutaj posuymy si funkcj  . Funkcja ta pobiera ikon z pliku exe.
Posiada ona dwa parametry. Pierwszy to uchwyt do aplikacji, ktra zawiera ikon,
a drugi to nazwa ikony. Istniej ikony standardowe. Dla nich parametr pierwszy
musi mie warto . Nazwy ikon standardowych to:
1,
-

Domylna ikona aplikacji

1,
 .

Asterisk (informacje)

1,=

Wykrzyknik (ostrzeenia)

1, 1

Ikona rki (powane ostrzeenia)

1,>&
-

Znak zapytania (zapytania)

1,  -<-

logo Windows

6. Zmienna -- identyfikuje kursor, jaki bdzie si pojawia, gdy wskanik


znajdzie si w obszarze okna. Funkcja -- ma takie same parametry jak
 .
# !, ? 64 @ 4  &1, - "2

Tu rwnie wystpuj standardowe kursory (pierwszy parametr ):


1,

 <

Strzaka i maa klepsydra

1, -

Strzaka

1, -

Krzyyk

1,$

Kursor tekstowy

1,-

Pusta ikona (tylko Windows NT)

1, -

Koo ukonie przekrelone

1,C

Strzaka w cztery strony (tylko Windows NT)

1,C

To samo, co 1,C, ale dla innych systemw

1,C  
1,C 
1,C 
1,C 

Podwjne strzaki w rnych kierunkach

1,& -

Pionowa strzaka

1, 

Klepsydra

78

C++BuilderX. wiczenia

7. 1-*- okrela sposb wypenienia ta okna. Inicjalizujemy go nazw

jednego z kolorw systemowych okrelonych dla skadowych interfejsu systemw.


Innymi sowy, moemy zada, aby okno miao kolor taki, jak np. paski okien,
przyciski czy menu. W naszym przykadzie kolor jest ustawiony na standardowy
kolor okna. Nazwy kolorw musz by konwertowane na typ $%. Po zmianie
schematu kolorw zmieni si te kolor ta naszego okna.
# !, ? 6B$?# 4@$ &"-- ,  1- 2

8. Skadowa 2  wskazuje na menu stowarzyszone z oknem. Nasze okno


na razie nie ma menu, wic parametr inicjalizujemy wartoci .
# !, ? 6)4 @ &2

9. 2  okrela nazw klasy okna. Jako nazw przypiszemy acuch

znakowy (tytu), ktry oczywicie musimy uprzednio zdefiniowa. Najpierw


opuszczamy wic funkcj 
i wpisujemy definicj zmiennej 
bezporednio po nagwku programu, przed funkcj .)#*/:
 *4DE@'-? # !?('2

Teraz wracamy do 


i podstawiamy tytu pod 2 :
# !, ? 6) @*42

Skadowe klasy '!%% mog przybiera rne wartoci, a jako wynik otrzymujemy
odpowiedni wygld i zachowanie okna. Wymienienie wszystkich moliwoci
przekracza zakres tej ksiki. Ograniczyem si tylko do tych, ktre s w danej
chwili potrzebne.
10. Po inicjalizacji skadowych klasy naley j zarejestrowa za pomoc funkcji
$-, a nastpnie (w przypadku udanej rejestracji) stworzy okno oparte

na naszej klasie.
Okno tworzymy za pomoc funkcji -). W naszym przypadku uyjemy jej
w postaci:
8 #F# !, ? ""
9
,!@  !*4*4
 ,-A 1  1- / ,1  
 ,&10&
 ,&10&

 ,&10&
 ,&10&

 1,1.
- &, &"2
;

,!@ &2

Pierwszy parametr oznacza nazw klasy reprezentujcej okno. Nie jest to nazwa
obiektu klasy, ale nazwa wpisana w zmienn 2 . Drugi parametr
to acuch znakowy, ktry bdzie wywietlany w pasku okna. Dla uproszczenia
wpiszemy tu ten sam tekst, ktry oznacza nazw klasy. Nastpny parametr okrela
sposb wywietlania okna.
 %+"$!&&"' ' wskazuje, e okno ma posiada pasek tytuowy i ramk.
 % & '$" okrela, e podczas malowania na oknie nie bdzie zamazany
obszar ewentualnych okien potomnych tego okna. Nastpne parametry oznaczaj

Rozdzia 3.  Aplikacje okienkowe

79

wsprzdne okna oraz jego szeroko i wysoko. Uyjemy tu zmiennej


%"'"#! przyporzdkowujcej tym zmiennym wartoci standardowe
zapisane w systemie.
Nastpny parametr okrela uchwyt do okna stojcego wyej w hierarchii.
Poniewa jest to pierwsze okno w aplikacji, funkcj okna nadrzdnego peni pulpit.
Dlatego podstawiamy tu ''"% &.
Kolejny parametr ma dwa znaczenia. Dla okna posiadajcego pasek i ramk (tak jak
nasze gwne okno) oznacza menu stowarzyszone z oknem. Dla okna potomnego
(ang. child window) oznacza uchwyt do tego okna. Wyjani to na przykadach
w dalszych podrozdziaach. Poniewa nasze okno nie ma menu, parametr ten wynosi
. Przedostatnia zmienna zawiera uchwyt do aplikacji, ktrej czci jest okno.
W naszym przypadku jest to zmienna  . Ostatni parametr to dodatkowe
wartoci przekazywane do okna. Na razie ustawimy go na .
W przypadku powodzenia funkcja -) zwraca uchwyt do gotowego okna.
W przypadku bdu zwracana jest warto .
11. Stworzenie okna nie jest rwnoznaczne z jego wywietleniem. Aby to zrobi, naley
uy funkcji % )). Wywietla ona okno o podanym uchwycie. Jako drugi

parametr zawiera zmienne okrelajce sposb wywietlania. W przypadku, kiedy


wywietlamy pierwsze okno aplikacji, za parametr ten naley podstawi zmienn
 % ) z funkcji . Nastpnie rysujemy wntrze okna za pomoc ).
 !  !,! !"2
&  !,!"2

12. Skompilujmy i wykonajmy nasz program. Okno na chwilk ukae si i zniknie.

Do poprawnego dziaania programu brakuje nam jeszcze obsugi komunikatw.


Teraz napiszemy gwn ptl programu, ktra bdzie odbieraa komunikaty nadsyane
przez system i rozsyaa je do funkcji zwrotnych, a pniej wypenimy nasz funkcj
.)#*/ procedurami obsugi podstawowych komunikatw.
wiczenie 3.6.

Przesyanie i przetwarzanie komunikatw:


1. W dalszym cigu 
napiszmy:
!<#F# &::"7:"
9

#F#"2
1#F#"2
;

. przejmuje komunikaty i wpisuje je do zmiennej . Drugi parametr


 oznacza, e chcemy przejmowa wszystkie komunikaty wysyane do danej
aplikacji. Zamiast  moemy tu podstawi uchwyt do konkretnego okna, wtedy
bd odbierane tylko komunikaty dla tego okna. - i ' 

zajmuj si rozsyaniem komunikatw do odpowiednich funkcji zwrotnych


dla poszczeglnych okien. Zauwamy, e ptla bdzie dziaaa, dopki funkcja

80

C++BuilderX. wiczenia

. nie zwrci wartoci zero. Stanie si to wtedy, jeeli przechwyci


ona komunikat 3 , ktry oznacza zakoczenie aplikacji. Tutaj koczymy
funkcj .
2. Pozostao nam jeszcze napisanie funkcji przetwarzajcej komunikaty. Na razie bdzie
ona obsugiwaa &!  %" i '"%$(.
 &
$.< !04?( 1!&
#  ! "
9
!#"
9
 ,
G
9


&
2
$#!F"2

%-46::'


''


'""2
!F"2
4:2
;
 ,-G91 *  !!"2B?2;
 ,1
- G9 >4#:"24:2;
;
418  ! !#!"2
;

Instrukcja ) wywouje odpowiedni procedur w zalenoci od treci


komunikatu. Komunikat &!  wysyany jest przez system w przypadku, kiedy
zachodzi konieczno odwieenia okna, na przykad w chwili, gdy uytkownik
zmieni pooenie okna lub jego wymiary. Funkcja & przygotowuje okno
do powtrnego narysowania i wypenia struktur , ktra okrela obszar okna.
 wypisuje w oknie podany cig znakowy. Parametrami tej funkcji s kolejno:
odnonik do struktury  okrelajcej granice okna, wsprzdne tekstu w oknie,
acuch znakowy zawierajcy tekst i dugo tego acucha. "& koczy
malowanie okna.
Komunikat %" jest wysyany w przypadku, kiedy uytkownik wyda komend
zamknicia okna. Wwczas uruchamiana jest funkcja '-), ktra kasuje
wskazane okno. Funkcja ta wysya take komunikat '"%$(. Ten z kolei aktywuje
funkcj &3, ktra wysya komunikat 3 , ktry z kolei koczy
ptl przechwytywania wiadomoci.
3. Teraz moemy ju skompilowa i uruchomi nasz program. Ukae si okno takie

jak poniej (rysunek 3.2).


Rysunek 3.2.
Gwne okno
aplikacji

Rozdzia 3.  Aplikacje okienkowe

81

Gwne okno aplikacji bdzie baz, ktr wykorzystamy do tworzenia aplikacji. W nastpnym podrozdziale stworzymy w naszej aplikacji kontrolki. S to elementy umoliwiajce
komunikacj uytkownika z aplikacj. Nale do nich przyciski, pola tekstowe itp.

You might also like