Пишем браузер на С++

CLAY
Оффлайн
Регистрация
25.01.17
Сообщения
763
Реакции
225
Репутация
292
И так, начнём:

Кликаем на WebBrowser и в его свойствах находим "Anchor": и выбираем стороны прикрепления как на картинке:

Теперь закрываем "Anchor" и компилируем наш браузер. Заходим на любой веб-сайт. Попытайтесь растянуть окно браузера - видим, что и элемент WebBrawser и его содержимое тоже растянулось!

То же самое нужно делать и с кнопками только их нужно закреплять вверху и справа(или слева), а вот адресную строку закрепляйте сверху, слева и справа, чтобы при растягивании формы, адресная строка тоже увеличивалась!

Кнопки легко можно заменить другим, более красивым элементом - PictureBox. Для того чтобы вставить картинку в свойствах PictureBox есть "Image" нажимаем на него и выбираем картинку с компьютера. Чтобы она растягивалась при увеличении картинки, ставим в свойстве "SizeMode" StretchImage.

Для того чтобы картинки, которые мы вставили в PictureBox, функционировали как кнопки, нужно присвоить им те же коды для события(клика по ним) как и у кнопок. Напомню что это:

Листинг : кнопка Назад this->webBrowser1->GoBack();

Листинг : кнопка Вперед this->webBrowser1->GoForward();

Листинг : кнопка Обновить this->webBrowser1->Refresh();

Листинг : кнопкаПерейти this->webBrowser1->Navigate(this->textBox1->Text);

Также мы можем поменять иконку формы: в свойствах форму ищем "Icon" - и добавляем .ico файл

. А чтобы изменить иконку готового .exe файла, заменяем файл "app.ico" в директории: "Папка в кот. хранится ваш проект\'название проекта'\" у меня это: "...\Веб Браузер\Веб Браузер\".

С оформительской частью мы закончили. Переходим к коду. Если вы уже "потыкали"(изучили) браузер, то наверняка заметили, что вводя текст в адресную строку и нажимая Enter, ничего не происходит. Почему же так? Давайте разберёмся и попытаемся это исправить: При переходе на веб-страницу мы нажимает кнопку и выполняется такой код: "this->webBrowser1->Navigate(this->textBox1->Text);". Значит, чтобы при нажатии Enter происходило то же самое, нужно присвоить нажатию Enter в TextBox этот же код. И так выделяем TextBox, во вкладке "Свойства" есть значок - "молния", нажимаем на него и вот мы видим События этого элемента. Находим там "KeyDown" и пишем имя этому событию(при нажатии Enter будет выставлено стандартное имя: "textBox1_KeyDown"). Далее мы переходим к коду и набираем там такие строки:

Листинг :
Описание if ( e->KeyCode == Keys::Enter) { this->webBrowser1->Navigate(this->textBox1->Text);

}

Готово. Теперь при нажатии Enter в TextBox браузер сможет переходить на заданную страницу. Чтобы страница загружалась быстрее такие строки как

Листинг :
Описание private: System::Void textBox1_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) { if ( e->KeyCode == Keys::Enter) { this->webBrowser1->Navigate(this->textBox1->Text);

}

} private: System::Void webBrowser1_DocumentCompleted(System::Object^ sender, System::Windows::Forms::WebBrowserDocumentCompletedEventArgs^ e) { this->textBox1->Text = webBrowser1->Url->ToString();

}

Лучше поместить в начало выполнение программы, а именно после "#pragma endregion". При переносе строк, будьте осторожны: не забывайте скобки, и не переносите лишние.
 
Сверху Снизу