Пи�?ем браузер на С++Builder
автор evteev, Янв.02, 2010, рубрики C/C++/C#
Продолжаю тему клонирования программ 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 принял адрес сайта
CppWebBrowser->Navigate(URL,0,NULL,NULL,NULL); //Адрес направлен на cppwebbrowser, по�?ла загрузка
}
Далее напи�?ем код для кнопки открыть:
OpenDialog1->Execute(); //Открываем окно выбора файлов
wchar_t URL[100];
Edit1->Text=(OpenDialog1->FileName); //Присваемаем Edit название выбраного файла
Edit1->Text.WideChar(URL,100);
CppWebBrowser->Navigate(URL,0,NULL,NULL,NULL);
Кнопка назад:
CppWebBrowser->GoBack();
Кнопка вперед:
CppWebBrowser->GoForward();
Кнопка стоп:
[block]2[/block]->Stop();
Кнопка Обновить:
[block]3[/block]->Refresh();
Все готово =) Браузер будет спокойно бороздить просторы инета, под ва�?им чутким контролем. Теперь я распи�?у то, как менять цвет панелек при наведении. �?так, для начала обговорим, что стандартным цветом на�?их panel будет — clBtnFace. Теперь ставим на OnMouseMove, следующий код:
Panel1->Color=clSkyBlue; //я выбрал цвет - небесно синий
В результате чего, при наведии панель поменяет цвет, теперь заставим вернуть ее преждний цвет (если пользователь убрал мы�?ь). Сперва, мы должны выбрать событие OnMouseMove для Form1 и теперь пи�?ем код:
Panel1->Color=clBtnFace; //результат панель приняла стандартный цвет
Мой блог о программировании находят по следующим фразам