DataLife Engine > C++ > Пишем браузер
Пишем браузер28 сентября 2007. Разместил: podpole |
Продолжаю тему клонирования программ darkamster'a на Delphi в С++Builder. В этой статье я покажу, как с помощью стандартных компонентов, можно создать свой браузер. Браузер будет на движке 'всеми-любимого' InternetExplorer. Наш зверь сможет ходить по URL, смотреть Html странички, ходить вперед и назад, конечно, перезагружать странички и останавливать загрузку.
Начнем новый проект. Советую сразу определиться с дизайном программы, не стоит далеко отходить от принятых стандартов, т.е кнопки навигации вверху, чуть ниже поле для ввода адреса URL, под ними будет располагаться просмотровщик страниц (компонент CppWebBrowser). Я вместо button использовал компонент panel (это моя задумка - во время наведения курсора панелька будет подсвечена, как это реализовать я напишу в самом конце). Под навигацией у меня располагается Edit для ввода адреса, под ним компонент CppWebBrowser, так же нам понадобиться компонент OpenDialod - для просмотра страничек с жесткого диска. Итак, впервую очередь мы распишем событие, совершаемое при нажатии enter в edit (с учетом того, что пользователь указал адрес сайта, событие называется - OnKeyPress). Вот код: if (Key == VK_RETURN){ // нажат ЕНТЕР wchar_t URL[100]; Edit1->Text.WideChar(URL,100); //Edit1 принял адрес сайта CppWebBrowser1->Navigate(URL,0,NULL,NULL,NULL); //Адрес направлен на cppwebbrowser, пошла загрузка } Далее напишем код для кнопки открыть: OpenDialog1->Execute(); //Открываем окно выбора файлов wchar_t URL[100]; Edit1->Text=(OpenDialog1->FileName); //Присваемаем Edit название выбраного файла Edit1->Text.WideChar(URL,100); CppWebBrowser1->Navigate(URL,0,NULL,NULL,NULL); Кнопка назад: CppWebBrowser1->GoBack(); Кнопка вперед: CppWebBrowser1->GoForward(); Кнопка стоп: CppWebBrowser1->Stop(); Кнопка Обновить: CppWebBrowser1->Refresh(); Все готово =) Браузер будет спокойно бороздить просторы инета, под вашим чутким контролем. Теперь я распишу то, как менять цвет панелек при наведении. Итак, для начала обговорим, что стандартным цветом наших panel будет - clBtnFace. Теперь ставим на OnMouseMove, следующий код: Panel1->Color=clSkyBlue; //я выбрал цвет - небесно синий В результате чего, при наведии панель поменяет цвет, теперь заставим вернуть ее преждний цвет (если пользователь убрал мышь). Сперва, мы должны выбрать событие OnMouseMove для Form1 и теперь пишем код: Panel1->Color=clBtnFace; //результат панель приняла стандартный цвет |