Microsoft Visual C++ 2008. Praktyczne przyk³ady



Podobne dokumenty
Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Firma Informatyczna JazzBIT

Instrukcja wprowadzania ocen do systemu USOSweb

Instrukcja programu PControl Powiadowmienia.

Microsoft Management Console

Pracownia internetowa w szkole podstawowej (edycja 2004)

I. Zakładanie nowego konta użytkownika.

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

Wtedy wystarczy wybrać właściwego Taga z listy.

Zdalne odnawianie certyfikatów do SWI

SZABLONY KOMUNIKATÓW SPIS TREŚCI

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Opis zmian funkcjonalności platformy E-GIODO wprowadzonych w związku z wprowadzeniem możliwości wysyłania wniosków bez podpisu elektronicznego

MySource Matrix CMS - PROSTY INTERFEJS UŻYTKOWNIKA. INSTRUKCJA ver 1.2

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

WSTĘP. Delphi. DDGX210(PL) - Edycja 1 du 01/

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

Konfiguracja historii plików

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Logowanie do systemu pocztowego GroupWise

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Instalacja i konfiguracja automatu synchronizacji CDN OFFLINE

Zarządzanie Zasobami by CTI. Instrukcja

STRONA GŁÓWNA SPIS TREŚCI. Zarządzanie zawartością stron... 2 Tworzenie nowej strony... 4 Zakładka... 4 Prawa kolumna... 9

Aplikacje internetowe i rozproszone - laboratorium

INFORMATOR TECHNICZNY WONDERWARE

Archiwum Prac Dyplomowych

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

INSTRUKCJA WebPTB 1.0

Użytkowanie elektronicznego dziennika UONET PLUS.

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Systemy mikroprocesorowe - projekt

PERSON Kraków

VinCent Office. Moduł Drukarki Fiskalnej

Co nowego w systemie Kancelaris 3.31 STD/3.41 PLUS

Spring MVC Andrzej Klusiewicz 1/18

Instrukcja dotycząca generowania klucza dostępowego do Sidoma v8

Nowe funkcjonalności

Miejski System Zarządzania - Katowicka Infrastruktura Informacji Przestrzennej

Pierwsze kroki. Krok 1. Uzupełnienie danych własnej firmy

Pracownia internetowa w ka dej szkole (edycja 2004)

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Chmura obliczeniowa. do przechowywania plików online. Anna Walkowiak CEN Koszalin

Praca na wielu bazach danych część 2. (Wersja 8.1)

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Instrukcja użytkownika systemu MOBEVO

InsERT GT Własne COM 1.0

Przewodnik AirPrint. Ten dokument obowiązuje dla modeli atramentowych. Wersja A POL

Pracownia internetowa w każdej szkole (edycja Jesień 2007)

SpedCust 5 instrukcja instalacji

Instrukcja obsługi. Oprogramowanie SAS 31

Poniżej instrukcja użytkowania platformy

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

ZAJĘCIA KOMPUTEROWE Kryteria ocen klasa IV

Przeniesienie lekcji SITA z płyt CD na ipoda touch

REJESTRATOR RES800 INSTRUKCJA OBSŁUGI

UWAGA! PRZECZYTAJ NAJPIERW:

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Program Płatnik Instrukcja instalacji

elektroniczna Platforma Usług Administracji Publicznej

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Rozliczenia z NFZ. Ogólne założenia. Spis treści

DRUKOWANIE ŚWIADECTW LIBRUS

Charakterystyka systemów plików

Kancelaris - Zmiany w wersji 2.50

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

OptiMore Importer Rejestru VAT. Instrukcja obsługi programu

Ćwiczenie 6.5. Otwory i śruby. Skrzynia V

O autorze 11 O recenzentach 13 Przedmowa 15

Jak spersonalizować wygląd bloga?

A X E S S INSTRUKCJA UŻYTKOWNIKA

MUltimedia internet Instrukcja Instalacji

Wymiana du ych plików instrukcja dla klientów Grontmij Polska Sp z o. o.

INSTRUKCJA KONFIGURACJI PRZEGLĄDARKI INTERNET EXPLORER

epuap Ogólna instrukcja organizacyjna kroków dla realizacji integracji

PRESTASHOP INTEGRATOR XL BY CTI INSTRUKCJA

System kontroli wersji SVN

enova Workflow Obieg faktury kosztowej

Logowanie do systemu Faktura elektroniczna

Podręcznik Użytkownika Plus Internet dla Mac OS X lub wyższa. Huawei E398 LTE

Instrukcja instalacji oraz wykorzystania podpisu cyfrowego

Tomasz Greszata - Koszalin

ARAKS FAKTURY Instalujemy program i wystawiamy fakturę krok po kroku, oraz co wyróżnia nasz program od innych. - 1

Elementy i funkcjonalno

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Instrukcja instalacji oprogramowania TSG wer. 5.0 z dost pem do danych poprzez sie Internet.

2. Program USOS. 2.1 Bezpiecze stwo i ochrona danych osobowych. 2.2 Uruchomienie programu

Opis instalacji systemu Intranet Komunikator

Logowanie do mobilnego systemu CUI i autoryzacja kodami SMS

Tytuł pracy. Praca dyplomowa inżynierska. Filip Piechocki. Tytuł Imię i Nazwisko

Transkrypt:

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!

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

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

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

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

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

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

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 kompletn 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 przedstawia tabela 12.1. Tabela 12.1. Wybrane w a ciwo ci kontrolki WebBrowser W a ciwo AllowNavigation Url CanGoBack CanGoForward Document DocumentText DocumentTitle Znaczenie W a ciwo umo liwiaj ca zablokowanie przegl darki tak, e nie mo na przej na inne strony ni aktualna. Warto false oznacza zablokowanie. Adres strony do wy wietlenia w przegl darce. Ta w a ciwo jest typu Uri^. Warto true oznacza, e odwiedzana strona nie jest pierwsz (istnieje historia). Warto true oznacza, e u ytkownik cofa si w historii odwiedzanych stron i wy wietlana strona nie jest ostatni odwiedzon. W a ciwo typu HtmlDocument zawieraj ca aktualnie wy wietlan w kontrolce stron. Mo e by u yta do pobrania danych ze strony. Zawiera ród o HTML strony aktualnie wy wietlonej w przegl darce. Tytu aktualnie wy wietlanej strony. Najprostszy sposób wy wietlenia strony WWW pokazuje przyk ad.

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 nale y zawsze poprzedza prefiksem. W przypadku 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.

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 dokumentu. 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 GoBack() GoForward() GoHome() GoSearch() Navigate(System::String adres) Navigate(Uri adres) Stop() Dzia anie Przenosi u ytkownika do poprzedniej strony w historii. Dzia a tylko, je eli w a ciwo CanGoBack==true. Przenosi do nast pnej strony w historii, je eli u ytkownik cofa si wcze niej. Przenosi do strony domowej. Strona domowa jest t sam, jaka zosta a okre lona w Internet Explorerze. Przenosi do strony domy lnej wyszukiwarki. Równie lokalizacja tej strony jest pobierana z Internet Explorera. Wy wietla w kontrolce stron o adresie adres. Zatrzymuje wczytywanie aktualnej strony. Bez problemu mo na doda mo liwo przechodzenia do stron wcze niej odwiedzonych, 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 tekstowe. 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 powinno 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

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: cofaj 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 adowych 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 rodzajó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 wstawiania obrazka oznacza cie k do pliku graficznego. Dost p do tych szczególnych w a ciwo 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).

Rozdzia 12. Po czenie aplikacji z sieci internet 157 Tabela 12.3. Niektóre w a ciwo ci obiektu HtmlDocument W a ciwo All Body Cookie Encoding Forms Images Links Title Znaczenie Tabela obiektów HtmlElement zawieraj ca wszystkie cz ci sk adowe dokumentu. Element zawieraj cy cz dokumentu po znaczniku BODY. Zawiera wszystkie znaczniki kontekstu (ang. cookies) powi zane z danym dokumentem. Kodowanie u ywane przez aktualny dokument. Tabela obiektów HtmlElement zawieraj ca wszystkie cz ci po znacznikach FORM. Obiekty HtmlElement reprezentuj ce cz ci dokumentu po znacznikach IMG (obrazy). Zbiór odno ników do innych stron zawartych w aktualnym dokumencie. 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 pokazuj ca obiekty graficzne na stronie

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

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

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ó niskim, 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 Credentials Method Znaczenie Zawiera login i has o stosowane przy logowaniu do serwera FTP. 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 ce do pobierania lub wysy ania danych Metoda GetResponse() GetRequestStream() Dzia anie Zwraca obiekt typu FtpWebResponse, z którego mo emy czyta dane wysy ane przez serwer. 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).

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);

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 aplikacji przedstawia rysunek 12.4. Zapisz aplikacj na dysku. Rysunek 12.4. Aplikacja pobieraj ca zawarto 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();

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 wpisywania adresu FTP, textbox2 do wy wietlania zawarto ci katalogu, a textbox3 do wpisywania 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 tekstowym jego pe n nazw i naci nij przycisk Pobierz plik. Po pobraniu plik b dzie si znajdowa w folderze roboczym aplikacji. Wygl d aplikacji przedstawia rysunek 12.5. Rysunek 12.5. Aplikacja do pobierania plików W przypadku pobierania d u szych plików metoda pobierania powinna uruchamia si w osobnym w tku. W cz ci z przyk adami znajduje si klient korzystaj cy z oddzielnych w tków.

164 Microsoft Visual C++ 2008. Praktyczne przyk ady Wysy anie pliku na serwer FTP Czas na zaprogramowanie mo liwo ci przesy ania pliku na serwer. Przyk ad 12.9 Do cz do aplikacji z poprzedniego przyk adu mo liwo przesy ania plików z dysku lokalnego na serwer. Rozwi zanie Otwórz aplikacj z poprzedniego przyk adu i umie trzeci przycisk Button oraz komponent systemowego okna otwarcia pliku OpenFileDialog. We w a ciwo ci Text trzeciego przycisku wpisz Wy lij plik. Po naci ni ciu przycisku powinno si pojawi standardowe okno wyboru pliku, w którym b dzie mo na wskaza plik do wys ania. Wysy anie pliku zrealizujemy w metodzie obs uguj cej 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 wys any", "Potwierdzenie",MessageBoxButtons::OK, MessageBoxIcon::Information); Po uruchomieniu programu nale y wpisa adres serwera wraz z katalogiem, w którym chcemy umie ci plik (na przyk ad ftp.mojftp.net/upload), a nast pnie najlepiej dla sprawdzenia pobra spis plików za pomoc przycisku Katalog. Teraz naci nij przycisk

Rozdzia 12. Po czenie aplikacji z sieci internet 165 Wy lij plik, wybierz plik w oknie dialogowym i kliknij OK plik zostanie wys any na serwer. Po wys aniu mo esz znowu pobra zawarto katalogu, aby sprawdzi, czy plik zosta wys any. Aby program dzia a, serwer musi zezwala na przyjmowanie plików. Je eli chcesz si zalogowa na prywatny serwer, musisz poda swój login i has o we w a ciwo ci Credentials. Wpisywanie swojego loginu i has a na sta e do programu jest niebezpieczne raczej nale y doda mo liwo wpisywania tych danych do pól tekstowych, sk d b d za ka dym razem pobierane.