Microsoft Visual C 2008 Praktyczne przyklady vc28pp

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 treci

Co znajdziesz w tej ksice? ............................................................. 9

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

Jzyk 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
Wygld 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
Wywietlanie wartoci zmiennych ................................................................................. 34
Pole tekstowe z mask formatu danych .......................................................................... 35
Pola wyboru, przyciski opcji, kontenery grupujce ........................................................ 37

Rozdzia 3. Menu i paski narzdzi ..................................................................... 41

Rodzaje menu ................................................................................................................. 41
Komponent MenuStrip ................................................................................................... 41
Menu podrczne ............................................................................................................. 47
Skróty klawiaturowe w menu ......................................................................................... 49
Paski narzdzi ................................................................................................................. 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 przykady

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

Pliki jako ródo danych ................................................................................................. 63
Wyszukiwanie plików .................................................................................................... 64
Odczyt wasnoci 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. Moliwoci edycji tekstu w komponencie TextBox .......................... 83

Waciwoci pola TextBox ............................................................................................. 83
Kopiowanie i wklejanie tekstu ze schowka .................................................................... 85
Wyszukiwanie znaków w tekcie ................................................................................... 86
Wstawianie tekstu midzy istniejce linie ...................................................................... 87
Wprowadzanie danych do aplikacji ................................................................................ 88
Prosta konwersja typów — klasa Convert ...................................................................... 88
Konwersja ze zmian formatu danych ............................................................................ 89
Konwersja liczby na acuch znakowy ........................................................................... 92

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

Podstawowe waciwoci komponentu DataGridView ................................................... 95
Zmiana wygldu tabeli ................................................................................................... 98
Dopasowanie wymiarów komórek tabeli do wywietlanego tekstu .............................. 101
Odczytywanie danych z komórek tabeli ....................................................................... 102
Zmiana liczby komórek podczas dziaania 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
Odnoniki internetowe w komórkach — DataGridViewLinkCell ................................ 119

Rozdzia 9. Metody zwizane 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
Pdzle zwyke i teksturowane ....................................................................................... 135
Rysowanie pojedynczych punktów — obiekt Bitmap .................................................. 137
Rysowanie trwae — odwieanie rysunku .................................................................. 138

Rozdzia 11. Podstawy aplikacji wielowtkowych ............................................. 141

Wtki ............................................................................................................................ 141
Komunikacja z komponentami z innych wtków — przekazywanie parametrów ........ 143
Przekazywanie parametrów do metody wtku .............................................................. 145
Klasa wtku — przekazywanie parametrów z kontrol typu ........................................ 146
Komponent BackgroundWorker ................................................................................... 148

background image

Spis treci

5

Rozdzia 12. Poczenie aplikacji z sieci internet ............................................. 153

Komponent WebBrowser ............................................................................................. 153
Przetwarzanie stron WWW — obiekt HtmlDocument ................................................. 156
Protokó FTP ................................................................................................................ 160
Pobieranie zawartoci katalogu z serwera FTP ............................................................. 161
Pobieranie plików przez FTP ........................................................................................ 162
Wysyanie pliku na serwer FTP .................................................................................... 164

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

Wywietlanie okien — klasa Form ............................................................................... 167
Komponenty w oknie tworzonym dynamicznie ........................................................... 169
Przesyanie danych z okien dialogowych ..................................................................... 170
Okno tytuowe aplikacji ................................................................................................ 171
Obsuga zdarze dla komponentów tworzonych dynamicznie ..................................... 172
Aplikacja zabezpieczona hasem .................................................................................. 173

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

Programy korzystajce 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

Wskaniki ..................................................................................................................... 184
Tablice .......................................................................................................................... 184
Operatory new i delete .................................................................................................. 185
Instrukcje ...................................................................................................................... 186

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

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

Przecianie funkcji ............................................................................................. 189
Niejednoznaczno .............................................................................................. 189
Przekazywanie argumentów przez warto i adres .............................................. 190
Wskaniki 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
Przecianie konstruktorów ................................................................................. 201
Przecianie operatorów ...................................................................................... 202
Statyczne metody i pola klasy .............................................................................. 203
Wskanik zwrotny this ......................................................................................... 204
Dziedziczenie ....................................................................................................... 205

background image

6

Microsoft Visual C++ 2008. Praktyczne przykady

Wasne kontrolki dziedziczce po standardowych ....................................................... 208
Przestrzenie nazw ......................................................................................................... 211
Wyjtki ......................................................................................................................... 212
Aplikacje, aplikacje ...................................................................................................... 215

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

Opis .............................................................................................................................. 217
Gówne okno ................................................................................................................ 217
Budowa interfejsu uytkownika ................................................................................... 219
Otwieranie pliku z dysku .............................................................................................. 223
Zapisanie pliku tekstowego .......................................................................................... 226
Obsuga schowka .......................................................................................................... 227

Cofanie komend (Undo) ...................................................................................... 228
Wycicie 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 uytkownika ................................................................................... 231
Wczytywanie pliku graficznego z dysku ...................................................................... 233
Wywietlanie 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 uytkownika ................................................................................................... 246
Struktura projektu C++/CLI ......................................................................................... 246
Wyznaczanie odlegoci midzy punktami ................................................................... 248
Rysowanie figur ........................................................................................................... 248
Obsuga programu ........................................................................................................ 251
Test ............................................................................................................................... 252

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

Opis .............................................................................................................................. 253
Interfejs uytkownika ................................................................................................... 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
Obsuga programu ........................................................................................................ 262
Inne ciekawe ukady do Gry w ycie ............................................................................ 262

Oscylatory ............................................................................................................ 263
Obiekty latajce ................................................................................................... 264

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

Rozdzia 19. Wiee Hanoi ................................................................................. 267

Opis .............................................................................................................................. 267
Interfejs uytkownika ................................................................................................... 268
Deklaracja zmiennych klasy Form1 ............................................................................. 270

background image

Spis treci

7

Obsuga menu ............................................................................................................... 270
Funkcja rysujca krki ................................................................................................ 272
Przekadanie krków ................................................................................................... 275
Róne kocowe metody ................................................................................................ 278
Test ............................................................................................................................... 279

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

Opis .............................................................................................................................. 281
Instalacja PostgreSQL .................................................................................................. 281
Wyczenie usugi bazy ................................................................................................ 284
Inicjalizacja bazy .......................................................................................................... 285
Organizacja i typy danych w bazach PostgreSQL ........................................................ 286
Jzyk SQL .................................................................................................................... 288
Utworzenie bazy danych .............................................................................................. 288
Interfejs uytkownika ................................................................................................... 290
Wczenie sterowników bazy PostgreSQL do projektu ................................................ 291
czenie z baz i odczyt danych ................................................................................... 292
Dodawanie danych do bazy .......................................................................................... 294
Zmiana danych w bazie ................................................................................................ 296
Kasowanie danych ........................................................................................................ 299
Obsuga bazy ................................................................................................................ 300
Test ............................................................................................................................... 300

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

Opis .............................................................................................................................. 303
Interfejs uytkownika ................................................................................................... 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
Obsuga ......................................................................................................................... 310
Test ............................................................................................................................... 310

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

Opis .............................................................................................................................. 313
Interfejs uytkownika ................................................................................................... 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 uytkownika ................................................................................................... 323
Klasa do obsugi FTP ................................................................................................... 324
Pobieranie katalogu ...................................................................................................... 326
Pobieranie plików ......................................................................................................... 328
Wysyanie plików ......................................................................................................... 329
Poruszanie si po folderach .......................................................................................... 329
Rozbudowa ................................................................................................................... 331
Test ............................................................................................................................... 331

background image

8

Microsoft Visual C++ 2008. Praktyczne przykady

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

Opis .............................................................................................................................. 333
Interfejs uytkownika ................................................................................................... 333
Otwieranie rysunku ...................................................................................................... 334
Obracanie rysunku ........................................................................................................ 335
Drukowanie .................................................................................................................. 336
Opis dziaania ............................................................................................................... 338
Test ............................................................................................................................... 338

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

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

background image

Rozdzia 12.

Poczenie aplikacji
z sieci internet

Komponent WebBrowser

Czasami istnieje potrzeba wywietlania w oknie aplikacji danych pobranych bezpo-
rednio ze stron WWW. W VC++ 2008 mamy komponent, który jest waciwie kom-
pletn przegldark stron opart na Internet Explorerze.

Za pomoc tego komponentu w prosty sposób mona wywietla zawarto caych stron
WWW w oknie aplikacji. Moe by on uyty nie tylko do przegldania stron w sieci,
ale take do wywietlania dokumentów HTML z komputera lokalnego (na przykad
plików pomocy aplikacji). Podstawowe waciwoci komponentu

WebBrowser

przed-

stawia tabela 12.1.

Tabela 12.1.

Wybrane waciwoci kontrolki WebBrowser

Waciwo

Znaczenie

AllowNavigation

Waciwo umoliwiajca zablokowanie przegldarki tak, e nie mona przej
na inne strony ni aktualna. Warto

false

oznacza zablokowanie.

Url

Adres strony do wywietlenia w przegldarce. Ta waciwo jest typu

Uri^

.

CanGoBack

Warto

true

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

CanGoForward

Warto

true

oznacza, e uytkownik cofa si w historii odwiedzanych stron

i wywietlana strona nie jest ostatni odwiedzon.

Document

Waciwo typu

HtmlDocument

zawierajca aktualnie wywietlan w kontrolce stron.

Moe by uyta do pobrania danych ze strony.

DocumentText

Zawiera ródo HTML strony aktualnie wywietlonej w przegldarce.

DocumentTitle

Tytu aktualnie wywietlanej strony.

Najprostszy sposób wywietlenia strony WWW pokazuje przykad.

background image

154

Microsoft Visual C++ 2008. Praktyczne przykady

Przykad 12.1 __________________________________________________

Po naciniciu przycisku wywietl w oknie aplikacji stron helion.pl.

Rozwizanie

Do okna aplikacji wstaw kontrolk

WebBrowser

(zakadka okna narzdziowego, ostatnia

kontrolka w dziale Common Controls) oraz przycisk

Button

.

Powiksz rozmiary okna aplikacji i kontrolki

WebBrowser

tak, aby zwikszy komfort

ogldania stron.

Do zdarzenia

Click

przycisku przypisz nastpujc 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 naciniciu przycisku w oknie kontrolki pojawi si odpowiednia
strona WWW (rysunek 12.1).

Rysunek 12.1.

Wywietlanie stron WWW w komponencie WebBrowser

Adres przekazywany do waciwoci

Url naley zawsze poprzedza prefiksem. W przy-

padku stron WWW jest to http://.

W podobny sposób mona wywietli plik lokalny.

Przykad 12.2 __________________________________________________

Utwórz w katalogu na dysku C: folder Aplikacja, a nastpnie w tym folderze plik
pomoc.html o dowolnej treci.

background image

Rozdzia 12.

i Poczenie aplikacji z sieci internet

155

Wywietl w oknie kontrolki

WebBrowser

plik pomoc.html znajdujcy si w folderze

C:\Aplikacja lub inny plik HTML.

Rozwizanie

Zbuduj program identyczny jak w poprzednim przykadzie, zmie jedynie adres doku-
mentu.

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

Program bdzie teraz wywietla plik lokalny.

Klasa kontrolki

WebBrowser

posiada te wiele metod, które umoliwiaj nawigacj po

stronach WWW. Przedstawia je tabela 12.2.

Tabela 12.2.

Wybrane metody obiektu WebBrowser

Metoda

Dziaanie

GoBack()

Przenosi uytkownika do poprzedniej strony w historii. Dziaa
tylko, jeeli waciwo

CanGoBack==true

.

GoForward()

Przenosi do nastpnej strony w historii, jeeli uytkownik cofa
si wczeniej.

GoHome()

Przenosi do strony domowej. Strona domowa jest t sam, jaka
zostaa okrelona w Internet Explorerze.

GoSearch()

Przenosi do strony domylnej wyszukiwarki. Równie lokalizacja
tej strony jest pobierana z Internet Explorera.

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

Wywietla w kontrolce stron o adresie

adres

.

Stop()

Zatrzymuje wczytywanie aktualnej strony.

Bez problemu mona doda moliwo przechodzenia do stron wczeniej odwiedzo-
nych, tak jak w przegldarce. Chocia pisanie kolejnej przegldarki internetowej mija
si waciwie z celem, to nawigacj mona wykorzysta do opracowania na przykad
plików pomocy czy prezentacji, któr bdzie mona oglda wewntrz aplikacji.

Przykad 12.3 __________________________________________________

Napisz przegldark stron WWW z moliwoci poruszania si po historii odwiedzanych
stron.

Rozwizanie

Utwórz aplikacj i dodaj do jej okna komponent

WebBrowser

, dwa przyciski i pole tek-

stowe. We waciwoci

Text

pierwszego przycisku wpisz

Wstecz

, a drugiego —

Naprzód

.

W polu tekstowym bdziemy wpisywa stron do odwiedzenia, jej wczytanie powin-
no nastpi, kiedy uytkownik nacinie klawisz Enter. Aby tak si stao, trzeba obsu-
y zdarzenie

KeyDown

dla pola tekstowego. Zaznacz pole tekstowe mysz w widoku

background image

156

Microsoft Visual C++ 2008. Praktyczne przykady

projektowania aplikacji, odnajd to zdarzenie w panelu zdarze, a nastpnie kliknij je
dwukrotnie. Utworzy si metoda obsugi tego zdarzenia, jednym z parametrów tej
metody bdzie rodzaj nacinitego klawisza. Oto kod tej metody, w którym przejcie
do strony nastpuje przy wykryciu nacinicia 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-
jce lub przenoszce 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 bdziemy jeszcze z niego korzysta.

Przetwarzanie stron WWW
— obiekt HtmlDocument

Do lepszego zrozumienia tej czci rozdziau konieczna jest znajomo podstaw
skadni jzyka HTML. Celem uycia kontrolki

WebBrowser

nie bdzie raczej napisanie

kolejnej przegldarki WWW, bo takich jest ju duo. Zamiast tego za pomoc tej
kontrolki mona wykonywa operacje na dokumentach pisanych w jzyku HTML.
rodowisko .NET Framework zawiera klas

HtmlDocument

, która reprezentuje dokument

tego typu. Za pomoc tego obiektu uzyskujemy dostp do poszczególnych czci ska-
dowych pliku HTML. Te czci skadowe s zawarte w obiektach

HtmlElement

. Obiekt

typu

HtmlDocument

grupuje wic kilka obiektów

HtmlElement

.

Waciwoci obiektu

HtmlDocument

przedstawia tabela 12.3.

Obiekt

HtmlElement

posiada waciwoci ogólne odnoszce si do wszystkich rodza-

jów sekcji kodu HTML. Najbardziej interesujce s zwykle waciwoci szczególne,
odnoszce si do konkretnych czci kodu, na przykad znacznik

SRC

w kodzie wstawia-

nia obrazka oznacza ciek do pliku graficznego. Dostp do tych szczególnych waci-
woci uzyskujemy za pomoc metod

GetAttribute()

lub

SetAttribute()

. Argumentami

tych metod jest znacznik w kodzie, do którego chcemy uzyska dostp (na przykad

SRC

dla odczytania cieki dostpu do obrazka).

background image

Rozdzia 12.

i Poczenie aplikacji z sieci internet

157

Tabela 12.3.

Niektóre waciwoci obiektu HtmlDocument

Waciwo

Znaczenie

All

Tabela obiektów

HtmlElement

zawierajca wszystkie czci skadowe dokumentu.

Body

Element zawierajcy cz dokumentu po znaczniku

BODY

.

Cookie

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

Encoding

Kodowanie uywane przez aktualny dokument.

Forms

Tabela obiektów

HtmlElement

zawierajca wszystkie czci po znacznikach

FORM

.

Images

Obiekty

HtmlElement

reprezentujce czci dokumentu po znacznikach

IMG

(obrazy).

Links

Zbiór odnoników do innych stron zawartych w aktualnym dokumencie.

Title

Tytu dokumentu.

Przykad 12.4 __________________________________________________

Wypisz w polu tekstowym cieki do wszystkich plików graficznych na stronie WWW
wywietlonej w kontrolce

WebBrowser

.

Rozwizanie

Otwórz projekt z przykadu 12.3.

Zmniejsz troch obszar kontrolki

WebBrowser

i dodaj do okna aplikacji kolejny przycisk

Button

oraz pole tekstowe

TextBox

; cao niech wyglda jak na rysunku 12.2.

Rysunek 12.2.

Aplikacja pokazujca obiekty graficzne na stronie

background image

158

Microsoft Visual C++ 2008. Praktyczne przykady

Po naciniciu trzeciego przycisku w polu tekstowym powinny si pojawi odnoniki
do wszystkich obrazków zawartych na wywietlanej stronie WWW. Aby to zrobi,
skorzystamy z waciwoci

Image

obiektu

HtmlDocument

. Waciwo

Image

jest typu

tablicowego, do odczytu jej elementów uyjemy enumeratora (porównaj przykad 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);
}
}

Dziaanie programu dla strony helion.pl pokazuje rysunek 12.2.

W atwy sposób mona te napisa program, który bdzie sprawdza, czy dana strona
WWW posuguje si jakimi znacznikami kontekstu. Wykorzystamy do tego odpowied-
ni waciwo obiektu

HtmlDocument

.

Przykad 12.5 __________________________________________________

Wyposa przegldark w moliwo podgldu znaczników kontekstu na danej stronie.

Rozwizanie

Utwórz aplikacj identyczn jak w przykadzie 12.4.

Tym razem metoda wywoywana przy naciniciu trzeciego przycisku jest nastpujca:

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!");
}

Przykad 12.6 __________________________________________________

Po naciniciu przycisku wywietl w polu tekstowym wszystkie odnoniki znajdujce
si na danej stronie.

background image

Rozdzia 12.

i Poczenie aplikacji z sieci internet

159

Rozwizanie

Utwórz aplikacj jak w przykadzie 12.4.

Po naciniciu trzeciego przycisku odczytamy zawarto waciwoci

Links

dla danej

strony. Podobnie jak to byo we waciwoci

Image

, jest to tablica obiektów

HtmlElement

,

któr bdziemy odczytywa za pomoc enumeratora.

Oto odpowiednia metoda trzeciego przycisku. Waciwo

InnerText

obiektu

HtmlElement

pozwala na odczytanie tekstu zwizanego z odnonikiem.

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 dziaaniu.

Rysunek 12.3.

Wywietlanie odnoników ze strony WWW

background image

160

Microsoft Visual C++ 2008. Praktyczne przykady

Protokó FTP

Protokó FTP suy do przesyania plików przez internet. Mona go uy we wntrzu
aplikacji na przykad do automatycznego pobrania uaktualnienia lub potrzebnych plików
z danymi.

Implementacja FTP w .NET Framework jest na poziomie, który nazwabym „póni-
skim”, co oznacza, e nie trzeba mie wiedzy o FTP, aby si nim posugiwa, ale nie
jest to te kwestia uycia jednej metody pobierajcej lub wysyajcej pliki. Poczenia
FTP umoliwiaj obiekty dwóch klas:

FtpWebRequest

i

FtpWebResponse

. Pierwszy z nich

reprezentuje zapytanie do serwera FTP, a drugi odpowied serwera. Do poprawnej pracy
bd potrzebne dwie waciwoci obiektu

FtpWebRequest

, które przedstawia tabela 12.4.

Tabela 12.4.

Wybrane waciwoci obiektu FtpWebRequest

Waciwo

Znaczenie

Credentials

Zawiera login i haso stosowane przy logowaniu do serwera FTP.

Method

Okrela rodzaj operacji do wykonania na serwerze. Moliwe wartoci to:



WebRequestMethods::Ftp::DownloadFile

— pobranie pliku,



WebRequestMethods::Ftp::UploadFile

— wysanie pliku,



WebRequestMethods::Ftp::ListDirectoryDetails

— pobranie szczegóowych

informacji o plikach znajdujcych si na serwerze.

Oprócz tych waciwoci bdziemy uywa dwóch metod opisanych w tabeli 12.5.

Tabela 12.5.

Metody obiektu FtpWebRequest suce do pobierania lub wysyania danych

Metoda

Dziaanie

GetResponse()

Zwraca obiekt typu

FtpWebResponse

, z którego moemy czyta dane wysyane

przez serwer.

GetRequestStream()

Zwraca strumie, do którego mona pisa dane, jakie maj by wysane
na serwer FTP.

Ogólnie zaprogramowanie pobierania danych z FTP wymaga nastpujcych czynnoci:

a)

Utworzenie obiektu

FtpWebRequest

— parametrem dla konstruktora obiektu

jest adres serwera; w przypadku pobrania lub wysania pliku parametrem
jest pena cieka wraz z nazw pliku.

b)

Zapisanie we waciwoci

Credentials

loginu i hasa do serwera.

c)

Wybranie czynnoci (wysanie bd pobranie pliku, pobranie zawartoci
katalogu) i odpowiednie ustawienie waciwoci

Method

.

d)

Wysanie 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 (zawartoci pliku lub katalogu).

background image

Rozdzia 12.

i Poczenie aplikacji z sieci internet

161

W przypadku wysania pliku na serwer czynnoci od a) do c) s takie same, a dalej
mamy:

d)

Otwarcie strumienia do pisania na serwer metod

GetRequestStream()

obiektu

FtpWebRequest

.

e)

Zapisanie danych (zawartoci pliku lokalnego) do tego strumienia.

Pobieranie zawartoci katalogu
z serwera FTP

Teraz zobaczmy, jak praca z FTP wyglda w praktyce.

Przykad 12.7 __________________________________________________

Pobierz zawarto podanego katalogu z podanego serwera FTP.

Rozwizanie

Do nowego okna aplikacji wstaw dwa pola tekstowe

TextBox

oraz przycisk

Button

.

Aby program dziaa, dodaj do niego moliwo korzystania z przestrzeni nazw

System:

´

:Net

i

System::IO

, które zawieraj potrzebne klasy.

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

Ustaw waciwo

Multiline

pola tekstowego

textBox2

na

true

i powiksz je tak, aby

mogo wywietli kilka linii tekstu.

Metod obsugujc zdarzenie

Click

napisz jak niej:

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 przykady

Po uruchomieniu programu wpisz adres dowolnego publicznego serwera FTP i nacinij
przycisk. W polu tekstowym otrzymasz zawarto gównego katalogu. Dziaanie aplika-
cji przedstawia rysunek 12.4. Zapisz aplikacj na dysku.

Rysunek 12.4.
Aplikacja pobierajca
zawarto folderu
z serwera FTP

Pobieranie plików przez FTP

Po znalezieniu potrzebnego pliku mona go pobra na dysk. Rozszerzymy aplikacj
o tak moliwo.

Przykad 12.8 __________________________________________________

Dodaj do aplikacji z przykadu 12.7 moliwo pobrania pliku.

Rozwizanie

Otwórz aplikacj z poprzedniego przykadu i umie trzeci przycisk

Button

oraz jeszcze

jedno pole tekstowe do wpisywania nazwy pliku do pobrania.

Metoda zdarzenia

Click

dla drugiego przycisku bdzie miaa 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

Rozdzia 12.

i Poczenie 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();
}

Powysza metoda dziaa przy zaoeniu, e pole tekstowe

textBox1

suy do wpisy-

wania adresu FTP,

textBox2

do wywietlania zawartoci katalogu, a

textBox3

do wpi-

sywania nazwy pliku do pobrania.

Po uruchomieniu aplikacji najpierw naley wpisa adres serwera wraz z folderem,
w którym znajduje si plik, a nastpnie nacisn przycisk Katalog. Po wywietleniu
listy plików sprawd, czy plik znajduje si na tej licie, a nastpnie wpisz w polu teksto-
wym jego pen nazw i nacinij przycisk Pobierz plik. Po pobraniu plik bdzie si znaj-
dowa w folderze roboczym aplikacji. Wygld aplikacji przedstawia rysunek 12.5.

Rysunek 12.5.
Aplikacja
do pobierania plików

W przypadku pobierania duszych plików metoda pobierania powinna uruchamia si
w osobnym wtku. W czci z przykadami znajduje si klient korzystajcy z oddziel-
nych wtków.

background image

164

Microsoft Visual C++ 2008. Praktyczne przykady

Wysyanie pliku na serwer FTP

Czas na zaprogramowanie moliwoci przesyania pliku na serwer.

Przykad 12.9 __________________________________________________

Docz do aplikacji z poprzedniego przykadu moliwo przesyania plików z dysku
lokalnego na serwer.

Rozwizanie

Otwórz aplikacj z poprzedniego przykadu i umie trzeci przycisk

Button

oraz kom-

ponent systemowego okna otwarcia pliku

OpenFileDialog

. We waciwoci

Text

trze-

ciego przycisku wpisz

Wylij plik

.

Po naciniciu przycisku powinno si pojawi standardowe okno wyboru pliku, w którym
bdzie mona wskaza plik do wysania.

Wysyanie pliku zrealizujemy w metodzie obsugujcej zdarzenie

Click

przycisku.

private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
if (openFileDialog1->ShowDialog()==
System::Windows::Forms::DialogResult::OK) {
if (openFileDialog1->FileName=="")
return;
Uri^ adres =
gcnew Uri("ftp://"+textBox1->Text+"/"+
Path::GetFileName(openFileDialog1->FileName));
FtpWebRequest^ req =
dynamic_cast<FtpWebRequest^>(WebRequest::Create(adres));
req->Credentials=gcnew
NetworkCredential("anonymous","moja_nazwa@moj_adres.pl");
req->Method=WebRequestMethods::Ftp::UploadFile;
FileStream^ stru_plik =
gcnew FileStream(openFileDialog1->FileName,FileMode::Open);
Stream^ req_stream = req->GetRequestStream();
int ile_bajtow;
array<Byte> ^ bufor = gcnew array<Byte>(1024);
do {
ile_bajtow=stru_plik->Read(bufor,0,1024);
req_stream->Write(bufor,0,ile_bajtow);
} while(ile_bajtow!=0);
req_stream->Close();
MessageBox::Show( "Plik wysany",
"Potwierdzenie",MessageBoxButtons::OK,
MessageBoxIcon::Information);
}
}

Po uruchomieniu programu naley wpisa adres serwera wraz z katalogiem, w którym
chcemy umieci plik (na przykad ftp.mojftp.net/upload), a nastpnie najlepiej dla
sprawdzenia pobra spis plików za pomoc przycisku Katalog. Teraz nacinij przycisk

background image

Rozdzia 12.

i Poczenie aplikacji z sieci internet

165

Wylij plik, wybierz plik w oknie dialogowym i kliknij OK — plik zostanie wysany
na serwer. Po wysaniu moesz znowu pobra zawarto katalogu, aby sprawdzi, czy
plik zosta wysany.

Aby program dziaa, serwer musi zezwala na przyjmowanie plików. Jeeli chcesz si
zalogowa na prywatny serwer, musisz poda swój login i haso we waciwoci
Credentials.

Wpisywanie swojego loginu i hasa na stae do programu jest niebezpieczne — raczej
naley doda moliwo wpisywania tych danych do pól tekstowych, skd bd za
kadym razem pobierane.


Wyszukiwarka

Podobne podstrony:
informatyka microsoft visual c 2008 praktyczne przyklady mariusz owczarek ebook
informatyka microsoft visual c 2012 praktyczne przyklady mariusz owczarek ebook
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

więcej podobnych podstron