Wstęp
Do rozpoczęcia budowy własnej przeglądarki potrzebne będzie:
Microsoft Visual C++ (najlepiej w wersji 2008)
-koniecznie działająca przeglądarka Internet Explorer
-bardzo minimalna wiedza o programowaniu i środowisku Visual C++ (choć sądzę, źe kaźdy byłby w stanie wykonać przeglądarkę dzięki pokazanemu tu opisowi)
Artykuł ten pokazuje jak zrobić szybko przeglądarkę w Microsoft Visual C++ 2008. Zrobienie przeglądarki w kilka minut pokazuje wielkie moźliwości języka C++. Przy tworzeniu tej prostej przeglądarki moźesz dowiedzieć się czegoś dodatkowego o Visual C++. Dla niektórych artykuł moźe się wydawać zbyt zawiły, ale chodzi tu by kaźdy zrozumiał jak zrobić przeglądarkę.
Uwaga!!! Program został wykonany w Microsoft Visual C++ 2008, lecz w starszych wersjach teź powinno działać.
Nie spodziewaj tu się czegoś podobnego do Firefoxa, Opery czy Internet Explorera. Przeglądarka będzie się opierała na silniku IE. Na początku została opisana krok po kroku budowa prostej przeglądarki, a potem stopniowe ulepszanie jej by na samym końcu stworzyć
całkiem przyzwoitą aplikację.
Przykładowa przeglądarka w Microsoft Visual C++
1. Uruchom Microsoft Visual C++ 2008.
2. Z menu File -> New -> Project .
3. Zaznacz Windows Forms Application.
4. W polu Name wpisz nazwę programu. Resztę pól pozostaw bez zmian. Zmieniamy takźe nazwę głównego okna programu poprzez zaznaczenie formy i wybraniu View->Other Windows->Properties window->Text i tam wpisaniu nazwy głównego okna.
5. Z menu View wybierz Toolbox i znajdż kontrolkę WebBrowser zlokalizowana w kategorii Common Controls. Przenieś ja na główne okno programu. Dodaj takźe przycisk Button (ustaw nazwę przycisku poprzez View->Other Windows->Properties Window->Text i wpisz nazwę przycisku „Wyświetl”) oraz pole tekstowe textBox. Całość rozmieść mniej więcej tak jak na obrazku.
6. Kliknij dwukrotnie na obiekt typu Button przechodząc w ten sposób do programowania domyślnej metody zdarzeniowej dla Button, czyli kliknięciu w ten przycisk.
7. Ujrzysz:
Kod private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
}
Pomiędzy nawiasami klamrowymi wpisz kod, aby wszystko wyglądało tak:
Kod private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
Uri^ adres=gcnew Uri(textBox1->Text);
webBrowser1->Url=adres;
}
8.Naciśnij przycisk kompilacji F7, a potem F5 i ciesz się ze swojej własnej przeglądarki. W polu tekstowym wpisz adres strony (koniecznie z protokołem http://) i kliknij w Button. Jeśli przeglądarka nie działa sprawdż czy wykonałeś poprawnie kroki opisane w tym artykule oraz czy przeglądarka Internet Explorer działa poprawnie. Nie poprzestawaj na tak zbudowanej przeglądarce. Rozwijaj ją o własne pomysły, a w przyszłości moźe będzie rywalem czołowych przeglądarek.
Dodaj podstawowe opcję
Oczywiście Twoja przeglądarka juź działa, ale co z tego jak nie ma w niej nawet tak podstawowych opcji jak przenoszenie do strony domowej, przechodzenie do następnej i poprzedniej strony, zatrzymywanie, odświeźanie strony. W bardzo prosty sposób moźesz dodać do przeglądarki tę opcję. Umieść na głównym oknie przeglądarki pięć dodatkowych przycisków typu Button. Rozmieść komponenty by całość wyglądała mniej więcej tak jak na poniźszym obrazku. Ustaw indywidualnie nazwę kaźdego przycisku poprzez View->Other
Windows->Properties Window->Text i wpisz nazwę przycisku i tak z kaźdym kolejnym.
Wstecz
Teraz kliknij dwa razy w Button Wstecz. Przenosisz się w ten sposób do domyślnej metody zdarzeniowej przycisku (czyli kliknięcia w ten przycisk). Uzupełnij kod tak by całość wyglądała tak:
Kod
private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->GoBack();
}
Naprzód
Kliknij dwa razy w Button Naprzód. Uzupełnij kod tak by całość wyglądała tak:
Kod private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->GoForward();
}
Stop
Kliknij dwa razy w Button Stop. Uzupełnij kod tak by całość wyglądała tak:
Kod private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->Stop();
}
Strona domowa
Kliknij dwa razy w Button Home. Ta funkcja będzie przenosić do strony domowej (takiej jak ustawiona w IE). Uzupełnij kod tak by całość wyglądała tak:
Kod private: System::Void button5_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->GoHome();
}
Wyszukiwarka
Kliknij dwa razy w Button Wyszukiwarka. Ta funkcja będzie przenosić do ustawionej w IE domyślnej wyszukiwarki. Uzupełnij kod tak by całość wyglądała tak:
Kod
private: System::Void button6_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->GoSearch();
}
Odświeźanie
Kliknij dwa razy w Button Odświeźanie. Uzupełnij kod tak by całość wyglądała tak:
Kod private: System::Void button7_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->Refresh();
}
Wady przeglądarki
Nie rozszerzalność przeglądarki
Bardzo szybko moźna zauwaźyć pierwsze wady przeglądarki. Wyświetla strony dobrze, ale zobaczmy co się dzieje po rozszerzeniu okna (patrz obrazek).
Oczywiście tą wadę moźna w prosty sposób naprawić.Otwórz View->Other Windows->Properties window. Następnie znajdż właściwość Anchor i ustaw w niej wszystkie moźliwości. Wada została naprawiona.
Zatwierdzanie Enter'em
Niestety przeglądarka nie reaguje na razie na przycisk enter. Po wpisaniu adresu musimy potwierdzać przyciskiem Wyświetl. Oczywiście jest prosty sposób na rozwiązanie tego problemu. Kliknij raz na pole tekstowe(tam gdzie wpisywany jest adres strony). Otwórz View->Other Windows->Properties window i kliknij w ikonkę pioruna. Następnie znajdż zdarzenie KeyPress i uzupełnij kod tak by wyglądał jak poniźej:
Kod private: System::Void textBox1_KeyPress(System::Object^ sender,
System::Windows::Forms::KeyPressEventArgs^ e)
{
if (e->KeyChar == (char)13)
{
System::String^adres = textBox1->Text;
webBrowser1->Navigate(adres);
}
}
Teraz juź moźesz zatwierdzać szukanie strony za pomocą klawisza Enter. Moźna więc usunąć kontrolkę Wyświetl, a w to miejsce moźesz ustawić właściwość Anchor pola tekstowego na wszystkie strony.
Automatyczne dopisywanie protokołu
Gdy przeglądarka nie zawiera funkcji automatycznego dopisywania protokołu musisz wstawiać za kaźdym razem "http://". Jest to dość uciąźliwie. By naprawić tą wadę naleźy dopisać do metody zdarzeniowej keyPress pola tekstowego krótki kod:
Kod if(!textBox1->Text->StartsWith("http://"))
{
textBox1->Text = "http://"+textBox1->Text;
}
Przycisk e-pomocnik.pl
Na koniec zrobisz jeszcze odwołanie do konkretnej strony. W tym wypadku do e-pomocnik.pl. Umieść na formie nowy przycisk. Następnie wejdż na http://e-pomocnik.pl/favicon.ico
Otwórz ikonkę za pomocą jakiegoś programu graficznego zapisz jako bmp. Otwórz okno View->Other Windows->Properties Window odnajdż właściwość images. Następnie zlokalizuj
ikonkę, zaznacz i kliknij OK. Tym sposobem moźesz dodać ikonki do pozostałych opcji. Teraz zostaje oprogramować przycisk
Kod private: System::Void button8_Click(System::Object^ sender, System::EventArgs^ e)
{
webBrowser1->Navigate("http://e-pomocnik.pl");
}
W taki sam sposób moźna uzyskać dostęp do innych stron np. googli. Poniźej widnieje obrazek z efektem końcowym(obrazek jest pomniejszony, dlatego jest trochę rozmazany).
Specjalnie dla e-pomocnik.pl : MarekM25