На этом шаге мы рассмотрим создание Web-браузера.
Microsoft WebBrowser - стандартный элемент управления на базе ActiveX, а это значит, что Вы можете
вставить его в свой MFC-проект, воспользовавшись Components and Controls Gallery. В результате
будет создан класс CWebBrowser2, служащий оболочкой для интерфейса IWebBrowser2 Automation,
предоставляемого элементом управления WebBrowser. Этот класс позволяет считывать/задавать свойства
и вызывать методы, применяя типы C++, а не Automation.
Однако предпочтительнее создавать приложения в стиле Web-браузера мастером MFC AppWizard,
определяя СHtmlView как класс представления. CHtmlView - производный от класса CView,
он обеспечивает функциональность элемента управления WebBrowser в контексте MFC-архитектуры
"документ/вид". CHtmlView содержит функции-члены, позволяющие Вам обращаться к возможностям браузера
из кода программы.
Создадим приложение в стиле Web-браузера средствами MFC AppWizard.
- Создание приложения MyHtmlApp.
- В меню File выберите команду New, чтобы создать новый проект MFC AppWizard (exe) по имени MyHtmlApp.
- В окне 1 мастера MFC AppWizard щелкните пункт Single document.
- В окнах 2-5 согласитесь с выбранными по умолчанию параметрами.
- В окне 6 в поле Base class щелкните CHtmlView. Щелкните Finish, а затем - ОК,
чтобы завершить создание проекта.
Создав проект, в ClassView раскройте класс CMyHtmlAppView.-Дважды щелкните функцию OnInitialUpdate для
просмотра ее кода. Он должен иметь следующий вид:
void CMyHtmlAppView::OnInitialUpdate() { CHtmlView::OnInitialUpdate(); // TODO: This code navigates to a popular spot on the Web- // Change the code to go where you'd like. Navigate2(_T("http://www.microsoft.com/visualc/"),NULL, NULL); }
OnInitialUpdate вызывает функцию CHtmlView::Navigate2() для нахождения и отображения в основном окне
приложения домашней страницы Visual C++ с Web-узла Microsoft. Если Ваш компьютер не
подключен к Интернету, Вы можете изменить функцию Navigate2() для отображения файла MyPage.htm. Если считать, что файл
Муpage.htm находится в папке C:\TEMP, строка должна выглядеть следующим образом:
Navigate2(_T("c:\\TEMP\\MyPage.htm"), NULL, NULL);
Прежде чем собрать и запустить приложение MyHtmlApp, добавьте кнопки Forward и Back,
выполнив следующие действия.
- Добавление меню и команд.
- В ResourceView в узле Menu откройте ресурс меню IDR_MAINFRAME.
- Удалите меню Edit, а на его место добавьте новое меню с заголовком &Go.
- Добавьте в это меню две команды - &Васк и &Forward. Задайте для них соответствующие строки
подсказки. Пусть редактор создаст заданные по умолчанию идентификаторы ID_GO_BACK и ID_GO_FORWARD. - Закройте редактор меню. Откройте ресурс панели инструментов IDR_MAINFRAME. Удалите кнопки Cut,
Copy и Paste, переместив их за пределы панели. - Создайте кнопки для идентификаторов команд ID_GO_BACK и ID_GO_FORWARD, как показано на
рисунке 1.
Рис.1. Кнопки Назад и Вперед - Закройте редактор панелей инструментов. Откройте ClassWizard и щелкните вкладку Message Maps.
- В класс CMyHtmlAppView добавьте обработчики команд для идентификаторов ID_GO_BACK и
ID_GO_FORWARD, назвав их ОnGoBack() и OnGoForward() соответственно. Приступите к
редактированию кода функций, щелкнув Edit Code. - В каждой из функций-обработчиков добавьте вызов соответствющей функции-члена класса CHtmlView:
void CMyHtmlAppView::OnGoBack() { GoBack(); } void CMyHtmlAppView::OnGoForward() { GoForward(); }
Рис.2. Функции-обработчики - Соберите и запустите приложение. Откроется страница, заданная по умолчанию реализации функции
CMyHtmlAppView::OnInitialUpdate().
Исследуйте особенности браузера, предоставленного Вашему приложению классом CHtmlView. Обратите
внимание, что строка состояния приложения отображает информацию о ссылках и процессе загрузки страницы. После
нескольких переходов по ссылкам на другие страницы Вы получите возможность передвигаться по списку просмотренных
страниц вперед и назад, пользуясь кнопками GoВасk и GoForward созданного Вами меню.
Созданное приложение можно взять здесь (38,9 Кб).
На следующем шаге мы рассмотрим доступ к объектной модели DHTML.