informatyka microsoft visual c 2008 praktyczne przyklady mariusz owczarek ebook

background image

Microsoft Visual
C++ 2008. Praktyczne
przyk³ady

Autor: Mariusz Owczarek
ISBN: 978-83-246-2587-1
Format: 158×235, stron: 360

• Poznaj w praktyce œrodowisko Visual C++ 2008
• Dowiedz siê, jak korzystaæ z gotowych komponentów programistycznych
• Naucz siê pisaæ w C++ aplikacje przeznaczone dla systemu Windows

Wiele osób s³ysza³o o jêzyku C++, lecz ogromna wiêkszoœæ z nich na sam¹ myœl
o bli¿szym poznaniu go reaguje z podobn¹ rezerw¹, jak na pomys³ wybrania siê na
wakacyjny kurs jêzyka mandaryñskiego. Osoby te pope³niaj¹ jednak niewybaczalny
b³¹d i skutecznie odcinaj¹ siê od niezwykle interesuj¹cego œwiata nowoczesnego
programowania. Na ludzi biegle znaj¹cych C++ czeka bardzo wiele atrakcyjnych ofert
pracy, a niemalej¹ca popularnoœæ systemów Windows sprawia, ¿e najbardziej poszukiwani
w tej grupie s¹ specjaliœci znaj¹cy Visual C++, czyli wygodne w u¿yciu i bardzo
rozbudowane œrodowisko programistyczne firmy Microsoft. Nie trzeba chyba dodawaæ,
¿e zarabiaj¹ oni zwykle znacznie wiêcej ni¿ najlepsi nawet t³umacze z jêzyka
mandaryñskiego…

Jeœli chcesz do³¹czyæ do tej programistycznej elity, ju¿ dziœ siêgnij po odpowiednie
Ÿród³o wiedzy. Ksi¹¿ka „Microsoft Visual C++ 2008. Praktyczne przyk³ady” umo¿liwi
Ci g³adkie rozpoczêcie przygody z Visual C++, prezentuj¹c podstawowe informacje na
temat jêzyka, opisuj¹c œrodowisko programistyczne, sposób tworzenia aplikacji oraz
technikê zarz¹dzania danymi i korzystania z plików. Nauczysz siê z niej równie¿
w³aœciwego stosowania elementów kontrolnych i komponentów programistycznych.
Poznasz metody przetwarzania wielow¹tkowego, zagadnienia zwi¹zane z grafik¹
i ³¹czeniem siê z sieci¹, a ponadto dowiesz siê, jak skonstruowany jest kod programu.
Na tym jednak nie koniec, bowiem na kilku rozbudowanych i bardzo zró¿nicowanych
przyk³adach poznasz te¿ praktyczne zastosowanie ca³ej tej teorii, a wszystko przy
u¿yciu bezp³atnej wersji œrodowiska programistycznego firmy Microsoft.

• Podstawowe informacje na temat Visual C++ 2008
• Instalacja œrodowiska programistycznego
• Elementy sk³adowe aplikacji i sposoby u¿ywania kontrolek
• Zarz¹dzanie danymi i u¿ywanie plików
• U¿ywanie najwa¿niejszych komponentów programistycznych
• Wykorzystanie elementów graficznych
• Podstawy korzystania z w¹tków
• Korzystanie z komponentów sieciowych
• Opis jêzyka C++ i C++/CLI oraz struktury napisanych w nich programów
• Praktyczne projekty aplikacji opracowanych za pomoc¹ Visual C++ 2008

Nie zwlekaj – ju¿ dziœ wkrocz w magiczny œwiat programowania

z wykorzystaniem Visual C++ 2008!

background image

Spis tre"ci

Co znajdziesz w tej ksi!#ce? ............................................................. 9

Rozdzia$ 1. Podstawy %rodowiska Visual C++ 2008 .......................................... 11

J zyk C++ a .NET Framework ....................................................................................... 11
Opis &rodowiska ............................................................................................................. 12
Pobieranie i instalacja &rodowiska .................................................................................. 12
G'ówne okno VC++ 2008 ............................................................................................... 13
Tworzenie nowej aplikacji w VC++ 2008 ........................................................................ 13
Wygl)d &rodowiska w trybie budowy aplikacji .............................................................. 16
Struktura projektu ........................................................................................................... 17
Klasa okna g'ównego ...................................................................................................... 18

Rozdzia$ 2. Podstawowe elementy aplikacji ...................................................... 21

G'ówne okno .................................................................................................................. 21
Przyciski ......................................................................................................................... 26
Etykiety .......................................................................................................................... 27
Pola tekstowe .................................................................................................................. 29
Wprowadzanie danych do aplikacji za pomoc) pól tekstowych ..................................... 31
Wprowadzanie danych z konwersj) typu ....................................................................... 32
Wy&wietlanie warto&ci zmiennych ................................................................................. 34
Pole tekstowe z mask) formatu danych .......................................................................... 35
Pola wyboru, przyciski opcji, kontenery grupuj)ce ........................................................ 37

Rozdzia$ 3. Menu i paski narz&dzi ..................................................................... 41

Rodzaje menu ................................................................................................................. 41
Komponent MenuStrip ................................................................................................... 41
Menu podr czne ............................................................................................................. 47
Skróty klawiaturowe w menu ......................................................................................... 49
Paski narz dzi ................................................................................................................. 51

Rozdzia$ 4. Tablice, uchwyty i dynamiczne tworzenie obiektów .......................... 55

Tablice ............................................................................................................................ 55
Uchwyty ......................................................................................................................... 59
Dynamiczne tworzenie obiektów — operator gcnew ..................................................... 60
Dynamiczna deklaracja tablic ......................................................................................... 61

background image

4

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Rozdzia$ 5. Komunikacja aplikacji z plikami ...................................................... 63

Pliki jako -ród'o danych ................................................................................................. 63
Wyszukiwanie plików .................................................................................................... 64
Odczyt w'asno&ci plików i folderów .............................................................................. 65
Odczyt danych z plików tekstowych .............................................................................. 66
Zapisywanie tekstu do pliku ........................................................................................... 69
Zapis danych do plików binarnych ................................................................................. 71
Odczyt z plików binarnych ............................................................................................. 72

Rozdzia$ 6. Okna dialogowe ............................................................................. 75

Okno typu MessageBox .................................................................................................. 75
Okno dialogowe otwarcia pliku ...................................................................................... 77
Okno zapisu pliku ........................................................................................................... 79
Okno wyboru koloru ....................................................................................................... 80
Wybór czcionki .............................................................................................................. 81

Rozdzia$ 7. Mo#liwo%ci edycji tekstu w komponencie TextBox .......................... 83

W'a&ciwo&ci pola TextBox ............................................................................................. 83
Kopiowanie i wklejanie tekstu ze schowka .................................................................... 85
Wyszukiwanie znaków w tek&cie ................................................................................... 86
Wstawianie tekstu mi dzy istniej)ce linie ...................................................................... 87
Wprowadzanie danych do aplikacji ................................................................................ 88
Prosta konwersja typów — klasa Convert ...................................................................... 88
Konwersja ze zmian) formatu danych ............................................................................ 89
Konwersja liczby na 'a<cuch znakowy ........................................................................... 92

Rozdzia$ 8. Komponent tabeli DataGridView ...................................................... 95

Podstawowe w'a&ciwo&ci komponentu DataGridView ................................................... 95
Zmiana wygl)du tabeli ................................................................................................... 98
Dopasowanie wymiarów komórek tabeli do wy&wietlanego tekstu .............................. 101
Odczytywanie danych z komórek tabeli ....................................................................... 102
Zmiana liczby komórek podczas dzia'ania aplikacji .................................................... 106
Tabela DataGridView z komórkami ró=nych typów .................................................... 110
Przyciski w komórkach — DataGridViewButtonCell .................................................. 113
Komórki z polami wyboru — DataGridViewCheckBoxCell ....................................... 114
Grafika w tabeli — komórka DataGridViewImageCell ............................................... 116
Komórka z list) rozwijan) — DataGridViewComboBoxCell ...................................... 117
Odno&niki internetowe w komórkach — DataGridViewLinkCell ................................ 119

Rozdzia$ 9. Metody zwi!zane z czasem — komponent Timer ........................... 123

Czas systemowy ........................................................................................................... 123
Komponent Timer ........................................................................................................ 125

Rozdzia$ 10. Grafika w aplikacjach Visual C++ .................................................. 127

Obiekt Graphics — kartka do rysowania ...................................................................... 127
Pióro Pen ...................................................................................................................... 133
P dzle zwyk'e i teksturowane ....................................................................................... 135
Rysowanie pojedynczych punktów — obiekt Bitmap .................................................. 137
Rysowanie trwa'e — od&wie=anie rysunku .................................................................. 138

Rozdzia$ 11. Podstawy aplikacji wielow!tkowych ............................................. 141

W)tki ............................................................................................................................ 141
Komunikacja z komponentami z innych w)tków — przekazywanie parametrów ........ 143
Przekazywanie parametrów do metody w)tku .............................................................. 145
Klasa w)tku — przekazywanie parametrów z kontrol) typu ........................................ 146
Komponent BackgroundWorker ................................................................................... 148

background image

Spis tre%ci

5

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet ............................................. 153

Komponent WebBrowser ............................................................................................. 153
Przetwarzanie stron WWW — obiekt HtmlDocument ................................................. 156
Protokó' FTP ................................................................................................................ 160
Pobieranie zawarto&ci katalogu z serwera FTP ............................................................. 161
Pobieranie plików przez FTP ........................................................................................ 162
Wysy'anie pliku na serwer FTP .................................................................................... 164

Rozdzia$ 13. Dynamiczne tworzenie okien i komponentów ................................. 167

Wy&wietlanie okien — klasa Form ............................................................................... 167
Komponenty w oknie tworzonym dynamicznie ........................................................... 169
Przesy'anie danych z okien dialogowych ..................................................................... 170
Okno tytu'owe aplikacji ................................................................................................ 171
Obs'uga zdarze< dla komponentów tworzonych dynamicznie ..................................... 172
Aplikacja zabezpieczona has'em .................................................................................. 173

Rozdzia$ 14. Struktura programów C++ i C++/CLI ............................................ 175

Programy korzystaj)ce z konsoli w VC++ 2008 .......................................................... 175
Ogólna posta> programu pisanego w C++ .................................................................... 176
Dyrektywy .................................................................................................................... 177

Dyrektywa #include ............................................................................................. 177
Dyrektywa #define ............................................................................................... 178
Dyrektywa #if — kompilacja warunkowa ........................................................... 178

Typy zmiennych ........................................................................................................... 178

Zmienne typu int .................................................................................................. 178
Zmienne typu float ............................................................................................... 179
Typ double ........................................................................................................... 179
Typ char ............................................................................................................... 179
Modyfikatory typów ............................................................................................ 179
Rzutowanie (konwersja) typów ........................................................................... 179
Typ wyliczeniowy ................................................................................................ 180

Operatory ...................................................................................................................... 180

Zapis danych do plików i odczyt z nich za pomoc) operatorów << i >> ............. 182

Wska-niki ..................................................................................................................... 184
Tablice .......................................................................................................................... 184
Operatory new i delete .................................................................................................. 185
Instrukcje ...................................................................................................................... 186

Instrukcje warunkowe .......................................................................................... 186
Instrukcje iteracji ................................................................................................. 187

Funkcje ......................................................................................................................... 188

Przeci)=anie funkcji ............................................................................................. 189
Niejednoznaczno&> .............................................................................................. 189
Przekazywanie argumentów przez warto&> i adres .............................................. 190
Wska-niki do funkcji ........................................................................................... 191

Funkcja main() ............................................................................................................. 192

Przekazywanie parametrów do funkcji main() ..................................................... 193

Struktury i unie ............................................................................................................. 195

Struktury .............................................................................................................. 195

Klasy ............................................................................................................................. 196

Konstruktory i destruktory ................................................................................... 199
Przeci)=anie konstruktorów ................................................................................. 201
Przeci)=anie operatorów ...................................................................................... 202
Statyczne metody i pola klasy .............................................................................. 203
Wska-nik zwrotny this ......................................................................................... 204
Dziedziczenie ....................................................................................................... 205

background image

6

Microsoft Visual C++ 2008. Praktyczne przyk$ady

W'asne kontrolki dziedzicz)ce po standardowych ....................................................... 208
Przestrzenie nazw ......................................................................................................... 211
Wyj)tki ......................................................................................................................... 212
Aplikacje, aplikacje ...................................................................................................... 215

Rozdzia$ 15. Prosty edytor tekstu .................................................................... 217

Opis .............................................................................................................................. 217
G'ówne okno ................................................................................................................ 217
Budowa interfejsu u=ytkownika ................................................................................... 219
Otwieranie pliku z dysku .............................................................................................. 223
Zapisanie pliku tekstowego .......................................................................................... 226
Obs'uga schowka .......................................................................................................... 227

Cofanie komend (Undo) ...................................................................................... 228
Wyci cie tekstu do umieszczenia w schowku ...................................................... 228
Aby skopiowa> tekst do schowka ........................................................................ 228
Aby wklei> tekst ze schowka ............................................................................... 229

Test ............................................................................................................................... 229

Rozdzia$ 16. Program do rysowania .................................................................. 231

Opis .............................................................................................................................. 231
Budowa interfejsu u=ytkownika ................................................................................... 231
Wczytywanie pliku graficznego z dysku ...................................................................... 233
Wy&wietlanie grafiki w oknie ....................................................................................... 234
Rysowanie w oknie za pomoc) myszy ......................................................................... 236
Zmiana koloru linii ....................................................................................................... 239
Zapis pliku graficznego na dysku ................................................................................. 240
Test ............................................................................................................................... 243

Rozdzia$ 17. Figury Voronoi .............................................................................. 245

Opis .............................................................................................................................. 245
Interfejs u=ytkownika ................................................................................................... 246
Struktura projektu C++/CLI ......................................................................................... 246
Wyznaczanie odleg'o&ci mi dzy punktami ................................................................... 248
Rysowanie figur ........................................................................................................... 248
Obs'uga programu ........................................................................................................ 251
Test ............................................................................................................................... 252

Rozdzia$ 18. Automat komórkowy .................................................................... 253

Opis .............................................................................................................................. 253
Interfejs u=ytkownika ................................................................................................... 254
Inicjalizacja planszy ..................................................................................................... 256
Zaznaczanie pól w siatce .............................................................................................. 257
Krok w trybie Gra w =ycie ............................................................................................ 258
Krok w trybie Seeds ..................................................................................................... 260
Kroki w trybie automatycznym .................................................................................... 261
Obs'uga programu ........................................................................................................ 262
Inne ciekawe uk'ady do Gry w =ycie ............................................................................ 262

Oscylatory ............................................................................................................ 263
Obiekty lataj)ce ................................................................................................... 264

Test ............................................................................................................................... 266

Rozdzia$ 19. Wie#e Hanoi ................................................................................. 267

Opis .............................................................................................................................. 267
Interfejs u=ytkownika ................................................................................................... 268
Deklaracja zmiennych klasy Form1 ............................................................................. 270

background image

Spis tre%ci

7

Obs'uga menu ............................................................................................................... 270
Funkcja rysuj)ca kr)=ki ................................................................................................ 272
Przek'adanie kr)=ków ................................................................................................... 275
Ró=ne ko<cowe metody ................................................................................................ 278
Test ............................................................................................................................... 279

Rozdzia$ 20. Aplikacja bazy danych .................................................................. 281

Opis .............................................................................................................................. 281
Instalacja PostgreSQL .................................................................................................. 281
Wy')czenie us'ugi bazy ................................................................................................ 284
Inicjalizacja bazy .......................................................................................................... 285
Organizacja i typy danych w bazach PostgreSQL ........................................................ 286
J zyk SQL .................................................................................................................... 288
Utworzenie bazy danych .............................................................................................. 288
Interfejs u=ytkownika ................................................................................................... 290
W')czenie sterowników bazy PostgreSQL do projektu ................................................ 291
X)czenie z baz) i odczyt danych ................................................................................... 292
Dodawanie danych do bazy .......................................................................................... 294
Zmiana danych w bazie ................................................................................................ 296
Kasowanie danych ........................................................................................................ 299
Obs'uga bazy ................................................................................................................ 300
Test ............................................................................................................................... 300

Rozdzia$ 21. Aplikacja do nauki s$ówek ............................................................ 303

Opis .............................................................................................................................. 303
Interfejs u=ytkownika ................................................................................................... 303
Deklaracja pól klasy ..................................................................................................... 305
Odczyt danych z pliku tekstowego ............................................................................... 306
Odpytywanie ze s'ówek ................................................................................................ 308
Zapis listy wyrazów do pliku tekstowego ..................................................................... 309
Obs'uga ......................................................................................................................... 310
Test ............................................................................................................................... 310

Rozdzia$ 22. Aplikacja do monitorowania systemu ............................................ 313

Opis .............................................................................................................................. 313
Interfejs u=ytkownika ................................................................................................... 313
Ustawienie parametrów kontrolek performanceCounter .............................................. 314
Odczyt parametrów z kontrolek performanceCounter .................................................. 316
Uruchamianie timera — ikona w pasku zada< ............................................................. 316
Rysowanie wykresów ................................................................................................... 318
Opis .............................................................................................................................. 321
Test .............................................................................................................................. 322

Rozdzia$ 23. Klient FTP .................................................................................... 323

Opis .............................................................................................................................. 323
Interfejs u=ytkownika ................................................................................................... 323
Klasa do obs'ugi FTP ................................................................................................... 324
Pobieranie katalogu ...................................................................................................... 326
Pobieranie plików ......................................................................................................... 328
Wysy'anie plików ......................................................................................................... 329
Poruszanie si po folderach .......................................................................................... 329
Rozbudowa ................................................................................................................... 331
Test ............................................................................................................................... 331

background image

8

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Rozdzia$ 24. Aplikacja do drukowania grafiki .................................................... 333

Opis .............................................................................................................................. 333
Interfejs u=ytkownika ................................................................................................... 333
Otwieranie rysunku ...................................................................................................... 334
Obracanie rysunku ........................................................................................................ 335
Drukowanie .................................................................................................................. 336
Opis dzia'ania ............................................................................................................... 338
Test ............................................................................................................................... 338

Odpowiedzi do testów .................................................................. 341

Skorowidz .................................................................................... 343

background image

Rozdzia 12.

Po%&czenie aplikacji
z sieci& internet

Komponent WebBrowser

Czasami istnieje potrzeba wy&wietlania w oknie aplikacji danych pobranych bezpo-
&rednio ze stron WWW. W VC++ 2008 mamy komponent, który jest w'a&ciwie kom-
pletn) przegl)dark) stron opart) na Internet Explorerze.

Za pomoc) tego komponentu w prosty sposób mo=na wy&wietla> zawarto&> ca'ych stron
WWW w oknie aplikacji. Mo=e by> on u=yty nie tylko do przegl)dania stron w sieci,
ale tak=e do wy&wietlania dokumentów HTML z komputera lokalnego (na przyk'ad
plików pomocy aplikacji). Podstawowe w'a&ciwo&ci komponentu

WebBrowser

przed-

stawia tabela 12.1.

Tabela 12.1. Wybrane w'a(ciwo(ci kontrolki WebBrowser

W$a%ciwo%(

Znaczenie

AllowNavigation

W'a&ciwo&> umo=liwiaj)ca zablokowanie przegl)darki tak, =e nie mo=na przej&>
na inne strony ni= aktualna. Warto&>

false

oznacza zablokowanie.

Url

Adres strony do wy&wietlenia w przegl)darce. Ta w'a&ciwo&> jest typu

Uri^

.

CanGoBack

Warto&>

true

oznacza, =e odwiedzana strona nie jest pierwsz) (istnieje historia).

CanGoForward

Warto&>

true

oznacza, =e u=ytkownik cofa' si w historii odwiedzanych stron

i wy&wietlana strona nie jest ostatni) odwiedzon).

Document

W'a&ciwo&> typu

HtmlDocument

zawieraj)ca aktualnie wy&wietlan) w kontrolce stron .

Mo=e by> u=yta do pobrania danych ze strony.

DocumentText

Zawiera -ród'o HTML strony aktualnie wy&wietlonej w przegl)darce.

DocumentTitle

Tytu' aktualnie wy&wietlanej strony.

Najprostszy sposób wy&wietlenia strony WWW pokazuje przyk'ad.

background image

154

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Przyk$ad 12.1 __________________________________________________

Po naci&ni ciu przycisku wy&wietl w oknie aplikacji stron helion.pl.

Rozwi!zanie

Do okna aplikacji wstaw kontrolk

WebBrowser

(zak'adka okna narz dziowego, ostatnia

kontrolka w dziale Common Controls) oraz przycisk

Button

.

Powi ksz rozmiary okna aplikacji i kontrolki

WebBrowser

tak, aby zwi kszy> komfort

ogl)dania stron.

Do zdarzenia

Click

przycisku przypisz nast puj)c) metod :

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Uri^ adres= gcnew Uri("http://helion.pl");
webBrowser1->Url=adres;
}

Uruchom aplikacj , po naci&ni ciu przycisku w oknie kontrolki pojawi si odpowiednia
strona WWW (rysunek 12.1).

Rysunek 12.1. Wy(wietlanie stron WWW w komponencie WebBrowser

Adres przekazywany do w a-ciwo-ci Url nale2y zawsze poprzedza3 prefiksem. W przy-
padku stron WWW jest to http://.

W podobny sposób mo=na wy&wietli> plik lokalny.

Przyk$ad 12.2 __________________________________________________

Utwórz w katalogu na dysku C: folder Aplikacja, a nast pnie w tym folderze plik
pomoc.html o dowolnej tre&ci.

background image

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet

155

Wy&wietl w oknie kontrolki

WebBrowser

plik pomoc.html znajduj)cy si w folderze

C:\Aplikacja lub inny plik HTML.

Rozwi!zanie

Zbuduj program identyczny jak w poprzednim przyk'adzie, zmie< jedynie adres doku-
mentu.

Uri^ adres= gcnew Uri("c:\\aplikacja\\pomoc.html");

Program b dzie teraz wy&wietla' plik lokalny.

Klasa kontrolki

WebBrowser

posiada te= wiele metod, które umo=liwiaj) nawigacj po

stronach WWW. Przedstawia je tabela 12.2.

Tabela 12.2. Wybrane metody obiektu WebBrowser

Metoda

Dzia$anie

GoBack()

Przenosi u=ytkownika do poprzedniej strony w historii. Dzia'a
tylko, je=eli w'a&ciwo&>

CanGoBack==true

.

GoForward()

Przenosi do nast pnej strony w historii, je=eli u=ytkownik cofa'
si wcze&niej.

GoHome()

Przenosi do strony domowej. Strona domowa jest t) sam), jaka
zosta'a okre&lona w Internet Explorerze.

GoSearch()

Przenosi do strony domy&lnej wyszukiwarki. Równie= lokalizacja
tej strony jest pobierana z Internet Explorera.

Navigate(System::String adres)
Navigate(Uri adres)

Wy&wietla w kontrolce stron o adresie

adres

.

Stop()

Zatrzymuje wczytywanie aktualnej strony.

Bez problemu mo=na doda> mo=liwo&> przechodzenia do stron wcze&niej odwiedzo-
nych, tak jak w przegl)darce. Chocia= pisanie kolejnej przegl)darki internetowej mija
si w'a&ciwie z celem, to nawigacj mo=na wykorzysta> do opracowania na przyk'ad
plików pomocy czy prezentacji, któr) b dzie mo=na ogl)da> wewn)trz aplikacji.

Przyk$ad 12.3 __________________________________________________

Napisz przegl)dark stron WWW z mo=liwo&ci) poruszania si po historii odwiedzanych
stron.

Rozwi!zanie

Utwórz aplikacj i dodaj do jej okna komponent

WebBrowser

, dwa przyciski i pole tek-

stowe. We w'a&ciwo&ci

Text

pierwszego przycisku wpisz

Wstecz

, a drugiego —

Naprzód

.

W polu tekstowym b dziemy wpisywa> stron do odwiedzenia, jej wczytanie powin-
no nast)pi>, kiedy u=ytkownik naci&nie klawisz Enter. Aby tak si sta'o, trzeba obs'u-
=y> zdarzenie

KeyDown

dla pola tekstowego. Zaznacz pole tekstowe mysz) w widoku

background image

156

Microsoft Visual C++ 2008. Praktyczne przyk$ady

projektowania aplikacji, odnajd- to zdarzenie w panelu zdarze<, a nast pnie kliknij je
dwukrotnie. Utworzy si metoda obs'ugi tego zdarzenia, jednym z parametrów tej
metody b dzie rodzaj naci&ni tego klawisza. Oto kod tej metody, w którym przej&cie
do strony nast puje przy wykryciu naci&ni cia klawisza Enter.

private: System::Void textBox1_KeyDown(System::Object^ sender,
System::Windows::Forms::KeyEventArgs^ e) {
if (e->KeyData==System::Windows::Forms::Keys::Enter)
webBrowser1->Navigate("http://"+textBox1->Text);
}

Teraz wystarczy ju= tylko zaprogramowa> metody przycisków — odpowiednio: cofa-
j)ce lub przenosz)ce do przodu w historii.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
webBrowser1->GoBack();
}
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
webBrowser1->GoForward();
}

Po wypróbowaniu zapisz projekt na dysku, poniewa= b dziemy jeszcze z niego korzysta>.

Przetwarzanie stron WWW
— obiekt HtmlDocument

Do lepszego zrozumienia tej cz &ci rozdzia'u konieczna jest znajomo&> podstaw
sk'adni j zyka HTML. Celem u=ycia kontrolki

WebBrowser

nie b dzie raczej napisanie

kolejnej przegl)darki WWW, bo takich jest ju= du=o. Zamiast tego za pomoc) tej
kontrolki mo=na wykonywa> operacje na dokumentach pisanych w j zyku HTML.
[rodowisko .NET Framework zawiera klas

HtmlDocument

, która reprezentuje dokument

tego typu. Za pomoc) tego obiektu uzyskujemy dost p do poszczególnych cz &ci sk'a-
dowych pliku HTML. Te cz &ci sk'adowe s) zawarte w obiektach

HtmlElement

. Obiekt

typu

HtmlDocument

grupuje wi c kilka obiektów

HtmlElement

.

W'a&ciwo&ci obiektu

HtmlDocument

przedstawia tabela 12.3.

Obiekt

HtmlElement

posiada w'a&ciwo&ci ogólne odnosz)ce si do wszystkich rodza-

jów sekcji kodu HTML. Najbardziej interesuj)ce s) zwykle w'a&ciwo&ci szczególne,
odnosz)ce si do konkretnych cz &ci kodu, na przyk'ad znacznik

SRC

w kodzie wstawia-

nia obrazka oznacza &cie=k do pliku graficznego. Dost p do tych szczególnych w'a&ci-
wo&ci uzyskujemy za pomoc) metod

GetAttribute()

lub

SetAttribute()

. Argumentami

tych metod jest znacznik w kodzie, do którego chcemy uzyska> dost p (na przyk'ad

SRC

dla odczytania &cie=ki dost pu do obrazka).

background image

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet

157

Tabela 12.3. Niektóre w'a(ciwo(ci obiektu HtmlDocument

W$a%ciwo%(

Znaczenie

All

Tabela obiektów

HtmlElement

zawieraj)ca wszystkie cz &ci sk'adowe dokumentu.

Body

Element zawieraj)cy cz &> dokumentu po znaczniku

BODY

.

Cookie

Zawiera wszystkie znaczniki kontekstu (ang. cookies) powi)zane z danym dokumentem.

Encoding

Kodowanie u=ywane przez aktualny dokument.

Forms

Tabela obiektów

HtmlElement

zawieraj)ca wszystkie cz &ci po znacznikach

FORM

.

Images

Obiekty

HtmlElement

reprezentuj)ce cz &ci dokumentu po znacznikach

IMG

(obrazy).

Links

Zbiór odno&ników do innych stron zawartych w aktualnym dokumencie.

Title

Tytu' dokumentu.

Przyk$ad 12.4 __________________________________________________

Wypisz w polu tekstowym &cie=ki do wszystkich plików graficznych na stronie WWW
wy&wietlonej w kontrolce

WebBrowser

.

Rozwi!zanie

Otwórz projekt z przyk'adu 12.3.

Zmniejsz troch obszar kontrolki

WebBrowser

i dodaj do okna aplikacji kolejny przycisk

Button

oraz pole tekstowe

TextBox

; ca'o&> niech wygl)da jak na rysunku 12.2.

Rysunek 12.2. Aplikacja pokazuj8ca obiekty graficzne na stronie

background image

158

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Po naci&ni ciu trzeciego przycisku w polu tekstowym powinny si pojawi> odno&niki
do wszystkich obrazków zawartych na wy&wietlanej stronie WWW. Aby to zrobi>,
skorzystamy z w'a&ciwo&ci

Image

obiektu

HtmlDocument

. W'a&ciwo&>

Image

jest typu

tablicowego, do odczytu jej elementów u=yjemy enumeratora (porównaj przyk'ad 4.2).
Do zdarzenia

Click

przycisku przypisz metod :

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
System::Collections::IEnumerator^ element=
webBrowser1->Document->Images->GetEnumerator();

element->MoveNext();
while ((element->MoveNext())&&(element!=nullptr)) {
textBox2->AppendText(((HtmlElement^)(element->Current))->
GetAttribute("SRC")->ToString());
textBox2->AppendText(System::Environment::NewLine);
}
}

Dzia'anie programu dla strony helion.pl pokazuje rysunek 12.2.

W 'atwy sposób mo=na te= napisa> program, który b dzie sprawdza', czy dana strona
WWW pos'uguje si jakimi& znacznikami kontekstu. Wykorzystamy do tego odpowied-
ni) w'a&ciwo&> obiektu

HtmlDocument

.

Przyk$ad 12.5 __________________________________________________

Wyposa= przegl)dark w mo=liwo&> podgl)du znaczników kontekstu na danej stronie.

Rozwi!zanie

Utwórz aplikacj identyczn) jak w przyk'adzie 12.4.

Tym razem metoda wywo'ywana przy naci&ni ciu trzeciego przycisku jest nast puj)ca:

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
System::String^ cookie;
cookie=webBrowser1->Document->Cookie;
textBox2->Clear();
if (cookie!=nullptr)
textBox2->AppendText(cookie);
else
textBox2->AppendText("Nie znaleziono znaczników kontekstu!");
}

Przyk$ad 12.6 __________________________________________________

Po naci&ni ciu przycisku wy&wietl w polu tekstowym wszystkie odno&niki znajduj)ce
si na danej stronie.

background image

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet

159

Rozwi!zanie

Utwórz aplikacj jak w przyk'adzie 12.4.

Po naci&ni ciu trzeciego przycisku odczytamy zawarto&> w'a&ciwo&ci

Links

dla danej

strony. Podobnie jak to by'o we w'a&ciwo&ci

Image

, jest to tablica obiektów

HtmlElement

,

któr) b dziemy odczytywa> za pomoc) enumeratora.

Oto odpowiednia metoda trzeciego przycisku. W'a&ciwo&>

InnerText

obiektu

HtmlElement

pozwala na odczytanie tekstu zwi)zanego z odno&nikiem.

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
System::Collections::IEnumerator^ odnosnik=
webBrowser1->Document->Links->GetEnumerator();
odnosnik->MoveNext();
while ((odnosnik->MoveNext())&&(odnosnik!=nullptr)) {
textBox2->AppendText(((HtmlElement^)(odnosnik->Current))->
InnerText->ToString()+" ");
textBox2->AppendText(((HtmlElement^)(odnosnik->Current))->
GetAttribute("href")->ToString());
textBox2->AppendText(System::Environment::NewLine);
}
}

Rysunek 12.3 pokazuje aplikacj w dzia'aniu.

Rysunek 12.3. Wy(wietlanie odno(ników ze strony WWW

background image

160

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Protokó% FTP

Protokó' FTP s'u=y do przesy'ania plików przez internet. Mo=na go u=y> we wn trzu
aplikacji na przyk'ad do automatycznego pobrania uaktualnienia lub potrzebnych plików
z danymi.

Implementacja FTP w .NET Framework jest na poziomie, który nazwa'bym „pó'ni-
skim”, co oznacza, =e nie trzeba mie> wiedzy o FTP, aby si nim pos'ugiwa>, ale nie
jest to te= kwestia u=ycia jednej metody pobieraj)cej lub wysy'aj)cej pliki. Po')czenia
FTP umo=liwiaj) obiekty dwóch klas:

FtpWebRequest

i

FtpWebResponse

. Pierwszy z nich

reprezentuje zapytanie do serwera FTP, a drugi odpowied- serwera. Do poprawnej pracy
b d) potrzebne dwie w'a&ciwo&ci obiektu

FtpWebRequest

, które przedstawia tabela 12.4.

Tabela 12.4. Wybrane w'a(ciwo(ci obiektu FtpWebRequest

W$a%ciwo%(

Znaczenie

Credentials

Zawiera login i has'o stosowane przy logowaniu do serwera FTP.

Method

Okre&la rodzaj operacji do wykonania na serwerze. Mo=liwe warto&ci to:

WebRequestMethods::Ftp::DownloadFile

— pobranie pliku,

WebRequestMethods::Ftp::UploadFile

— wys'anie pliku,

WebRequestMethods::Ftp::ListDirectoryDetails

— pobranie szczegó'owych

informacji o plikach znajduj)cych si na serwerze.

Oprócz tych w'a&ciwo&ci b dziemy u=ywa> dwóch metod opisanych w tabeli 12.5.

Tabela 12.5. Metody obiektu FtpWebRequest s'u@8ce do pobierania lub wysy'ania danych

Metoda

Dzia$anie

GetResponse()

Zwraca obiekt typu

FtpWebResponse

, z którego mo=emy czyta> dane wysy'ane

przez serwer.

GetRequestStream()

Zwraca strumie<, do którego mo=na pisa> dane, jakie maj) by> wys'ane
na serwer FTP.

Ogólnie zaprogramowanie pobierania danych z FTP wymaga nast puj)cych czynno&ci:

a)

Utworzenie obiektu

FtpWebRequest

— parametrem dla konstruktora obiektu

jest adres serwera; w przypadku pobrania lub wys'ania pliku parametrem
jest pe'na &cie=ka wraz z nazw) pliku.

b)

Zapisanie we w'a&ciwo&ci

Credentials

loginu i has'a do serwera.

c)

Wybranie czynno&ci (wys'anie b)d- pobranie pliku, pobranie zawarto&ci
katalogu) i odpowiednie ustawienie w'a&ciwo&ci

Method

.

d)

Wys'anie zapytania do serwera i pobranie odpowiedzi (czyli obiektu

FtpWebResponse

) za pomoc) metody

GetResponse()

.

e)

Pobranie strumienia odpowiedzi z obiektu

FtpWebResponse

i pobieranie z niego

danych (zawarto&ci pliku lub katalogu).

background image

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet

161

W przypadku wys'ania pliku na serwer czynno&ci od a) do c) s) takie same, a dalej
mamy:

d)

Otwarcie strumienia do pisania na serwer metod)

GetRequestStream()

obiektu

FtpWebRequest

.

e)

Zapisanie danych (zawarto&ci pliku lokalnego) do tego strumienia.

Pobieranie zawarto"ci katalogu
z serwera FTP

Teraz zobaczmy, jak praca z FTP wygl)da w praktyce.

Przyk$ad 12.7 __________________________________________________

Pobierz zawarto&> podanego katalogu z podanego serwera FTP.

Rozwi!zanie

Do nowego okna aplikacji wstaw dwa pola tekstowe

TextBox

oraz przycisk

Button

.

Aby program dzia'a', dodaj do niego mo=liwo&> korzystania z przestrzeni nazw

System:

:Net

i

System::IO

, które zawieraj) potrzebne klasy.

using namespace System::Net;
using namespace System::IO;

Ustaw w'a&ciwo&>

Multiline

pola tekstowego

textBox2

na

true

i powi ksz je tak, aby

mog'o wy&wietli> kilka linii tekstu.

Metod obs'uguj)c) zdarzenie

Click

napisz jak ni=ej:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
Uri^ adres = gcnew Uri("ftp://"+textBox1->Text);
FtpWebRequest^ req =
dynamic_cast<FtpWebRequest^>(WebRequest::Create(adres));
req->Credentials=gcnew
NetworkCredential("anonymous","moja_nazwa@moj_adres.pl");
req->Method=WebRequestMethods::Ftp::ListDirectoryDetails;
FtpWebResponse^ resp;
resp=dynamic_cast<FtpWebResponse^>(req->GetResponse());
Stream^ resp_stream = resp->GetResponseStream();
StreamReader^ reader = gcnew StreamReader(resp_stream);
String^ linia;
textBox2->Clear();
while (!reader->EndOfStream) {
linia=reader->ReadLine();
textBox2->AppendText(linia+System::Environment::NewLine);
}
}

background image

162

Microsoft Visual C++ 2008. Praktyczne przyk$ady

Po uruchomieniu programu wpisz adres dowolnego publicznego serwera FTP i naci&nij
przycisk. W polu tekstowym otrzymasz zawarto&> g'ównego katalogu. Dzia'anie aplika-
cji przedstawia rysunek 12.4. Zapisz aplikacj na dysku.

Rysunek 12.4.
Aplikacja pobieraj8ca
zawarto(A folderu
z serwera FTP

Pobieranie plików przez FTP

Po znalezieniu potrzebnego pliku mo=na go pobra> na dysk. Rozszerzymy aplikacj
o tak) mo=liwo&>.

Przyk$ad 12.8 __________________________________________________

Dodaj do aplikacji z przyk'adu 12.7 mo=liwo&> pobrania pliku.

Rozwi!zanie

Otwórz aplikacj z poprzedniego przyk'adu i umie&> trzeci przycisk

Button

oraz jeszcze

jedno pole tekstowe do wpisywania nazwy pliku do pobrania.

Metoda zdarzenia

Click

dla drugiego przycisku b dzie mia'a posta>:

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {
Uri^ adres = gcnew Uri("ftp://"+textBox1->Text+"/"+textBox3->Text);
FtpWebRequest^ req =
dynamic_cast<FtpWebRequest^>(WebRequest::Create(adres));
req->Credentials=gcnew
NetworkCredential("anonymous","moja_nazwa@moj_adres.pl");
req->Method=WebRequestMethods::Ftp::DownloadFile;
FtpWebResponse^ resp=dynamic_cast<FtpWebResponse^>(req->GetResponse());
Stream^ resp_stream = resp->GetResponseStream();

background image

Czytaj dalej...

Rozdzia$ 12. Po$!czenie aplikacji z sieci! internet

163

FileStream^ stru_plik =
gcnew FileStream("./"+textBox3->Text,FileMode::Create);
// czytaj plik z serwera i zapisuj do strumienia
int ile_bajtow;
array<Byte> ^ bufor = gcnew array<Byte>(1024);
do {
ile_bajtow=resp_stream->Read(bufor,0,bufor->Length);
stru_plik->Write(bufor,0,ile_bajtow);
} while(ile_bajtow!=0);
stru_plik->Flush();
stru_plik->Close();
resp_stream->Close();
resp->Close();
}

Powy=sza metoda dzia'a przy za'o=eniu, =e pole tekstowe

textBox1

s'u=y do wpisy-

wania adresu FTP,

textBox2

do wy&wietlania zawarto&ci katalogu, a

textBox3

do wpi-

sywania nazwy pliku do pobrania.

Po uruchomieniu aplikacji najpierw nale=y wpisa> adres serwera wraz z folderem,
w którym znajduje si plik, a nast pnie nacisn)> przycisk Katalog. Po wy&wietleniu
listy plików sprawd-, czy plik znajduje si na tej li&cie, a nast pnie wpisz w polu teksto-
wym jego pe'n) nazw i naci&nij przycisk Pobierz plik. Po pobraniu plik b dzie si znaj-
dowa' w folderze roboczym aplikacji. Wygl)d aplikacji przedstawia rysunek 12.5.

Rysunek 12.5.
Aplikacja
do pobierania plików

W przypadku pobierania d u2szych plików metoda pobierania powinna uruchamia3 si>
w osobnym w?tku. W cz>-ci z przyk adami znajduje si> klient korzystaj?cy z oddziel-
nych w?tków.


Wyszukiwarka

Podobne podstrony:
informatyka microsoft visual c 2012 praktyczne przyklady mariusz owczarek ebook
Microsoft Visual C 2008 Praktyczne przyklady vc28pp
Microsoft Visual C 2012 Praktyczne przyklady
Microsoft Visual C 2012 Praktyczne przyklady vc21pp
Microsoft Visual C 2012 Praktyczne przyklady vc21pp 2
Microsoft Visual C 2012 Praktyczne przyklady 2
Microsoft Visual C 2012 Praktyczne przyklady
Microsoft Visual C 2012 Praktyczne przyklady
Microsoft Visual C 2008 Tworzenie aplikacji dla Windows vc28aw
informatyka vba dla excela 2010 pl 155 praktycznych przykladow witold wrotek ebook

więcej podobnych podstron