╩ырёё CWebBrowser
╬яЁхфхыхэшх ъырёёр CWebBrowser Ёрёяюыюцхэю т Їрщых webbrowser.h, шёїюфэ√щ ЄхъёЄ ъюЄюЁюую яЁхфёЄртыхэ т ышёЄшэух 4.1. ╠хЄюф√ GetClsid ш Create юяЁхфхыхэ√ эхяюёЁхфёЄтхээю т ёрьюь ъырёёх CWebBrowser. ╬ёЄры№э√х ьхЄюф√ ъырёёр CWebBrowser юяЁхфхыхэ√ т Їрщых webbrowser.cpp, ёюфхЁцр∙шьё т ышёЄшэух 4.3. ╠√ юёЄртшыш ъюььхэЄрЁшш эр рэуышщёъюь ч√ъх, ъюЄюЁ√х с√ыш фюсртыхэ√ тю тЁхь тёЄртъш Microsoft Web Browser Control т яЁюхъЄ.
╦шёЄшэу 4.3. ╘рщы webbrowser.h
#ifndef __WEBBROWSER_H__
#define __WEBBROWSER_H__
// Machine generated IDispatch wrapper class(es) created by
// Microsoft Visual C++
// NOTE: Do not modify the contents of this file.а If this
// class is regenerated by Microsoft Visual C++, your
// modifications will be overwritten.
//////////////////////////////////////////////////////////////
// CWebBrowser wrapper class
class CWebBrowser : public CWnd
{
protected:
аа DECLARE_DYNCREATE(CWebBrowser)
public:
аа CLSID const& GetClsid()
аа {
ааааа static CLSID const clsid
аааааааа = { 0xeab22ac3, 0x30c1, 0x11cf,
аааааааааааа { 0xa7, 0xeb, 0x0, 0x0, 0xc0, 0x5b, 0xae, 0xb }
аааааааааа };
ааааа return clsid;
аа }
аа virtual BOOL Create(
ааааа LPCTSTR lpszClassName,
ааааа LPCTSTR lpszWindowName, DWORD dwStyle,
ааааа const RECT& rect,
ааааа CWnd* pParentWnd, UINT nID,
ааааа CCreateContext* pContext = NULL)
аа {
ааааа return CreateControl(
аааааааа GetClsid(),
аааааааа lpszWindowName,
аааааааа dwStyle,
аааааааа rect,
аааааааа pParentWnd,
аааааааа nID);
аа }
аа BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle,
ааааа const RECT& rect, CWnd* pParentWnd, UINT nID,
ааааа CFile* pPersist = NULL, BOOL bStorage = FALSE,
ааааа BSTR bstrLicKey = NULL)
аа {
ааааа return CreateControl(
аааааааа GetClsid(),
аааааааа lpszWindowName,
аааааааа dwStyle,
аааааааа rect,
аааааааа pParentWnd,
аааааааа nID,
аааааааа pPersist,
аааааааа bStorage,
аааааааа bstrLicKey);
аа }
// Operations
public:
// method 'QueryInterface' not emitted because of invalid
// return type or parameter type
unsigned long AddRef();
unsigned long Release();
// method 'GetTypeInfoCount' not emitted because of invalid
// return type or parameter type
// method 'GetTypeInfo' not emitted because of invalid
// return type or parameter type
// method 'GetIDsOfNames' not emitted because of invalid
// return type or parameter type
// method 'Invoke' not emitted because of invalid return
// type or parameter type
void GoBack();
void GoForward();
void GoHome();
void GoSearch();
void Navigate(
LPCTSTR URL, VARIANT* Flags, VARIANT* TargetFrameName,
VARIANT* PostData, VARIANT* Headers);
void Refresh();
void Refresh2(VARIANT* Level);
void Stop();
LPDISPATCH GetApplication();
LPDISPATCH GetParent();
LPDISPATCH GetContainer();
LPDISPATCH GetDocument();
BOOL GetTopLevelContainer();
CString GetType();
long GetLeft();
void SetLeft(long nNewValue);
long GetTop();
void SetTop(long nNewValue);
long GetWidth();
void SetWidth(long nNewValue);
long GetHeight();
void SetHeight(long nNewValue);
CString GetLocationName();
CString GetLocationURL();
BOOL GetBusy();
};
#endif // __WEBBROWSER_H__
Не рекомендуется вносить изменения в исходные тексты класса CWebBrowser и тексты его методов, расположенные в файлах webbrowser.h и webbrowser.cpp. Эти файлы могут быть созданы Microsoft Visual C++ заново, если вы повторно вставите орган управления Microsoft Web Browser в проект. В этом случае все изменения, внесенные вами в файлы webbrowser.h и webbrowser.cpp будут уничтожены.
Если у вас все же возникнет необходимость модифицировать класс CWebBrowser, создайте новый класс, порожденный от класса CWebBrowser и используйте его.
¨ Когда вы добавляете в проект орган управления Microsoft Web Browser Control, в файле определения класса отмечается, что ряд методов (QueryInterface, AddRef, Release, GetTypeInfoCount, GetTypeInfo, GetIDsOfNames, Invoke) не подключены, так как они имеют неправильный тип возвращаемого значения или неправильный тип параметров. В случае если вы пользуетесь Microsoft Visual C++ версии 5.0 эти сообщения не появляются, но перечисленные методы также не будут доступны
Все методы класса CWebBrowser, за исключением метода GetClsid и двух модификаций метода Create, определены в файле webbrowser.cpp. Исходный текст этого файла представлен в листинге 4.4. Методы GetClsid и Create определены непосредственно в описании класса CWebBrowser (листинг 4.3).
Листинг 4.4. Файл webbrowser.cpp
// Machine generated IDispatch wrapper class(es) created by
// Microsoft Visual C++
// NOTE: Do not modify the contents of this file. If this
// class is regenerated by Microsoft Visual C++, your
// modifications will be overwritten.
#include "stdafx.h"
#include "webbrowser.h"
//////////////////////////////////////////////////////////////
// CWebBrowser
IMPLEMENT_DYNCREATE(CWebBrowser, CWnd)
//////////////////////////////////////////////////////////////
// CWebBrowser properties
//////////////////////////////////////////////////////////////
// CWebBrowser operations
unsigned long CWebBrowser::AddRef()
{
unsigned long result;
InvokeHelper(0x60000001, DISPATCH_METHOD, VT_I4,
(void*)&result, NULL);
return result;
}
unsigned long CWebBrowser::Release()
{
unsigned long result;
InvokeHelper(0x60000002, DISPATCH_METHOD, VT_I4,
(void*)&result, NULL);
return result;
}
void CWebBrowser::GoBack()
{
InvokeHelper(0x64, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser::GoForward()
{
InvokeHelper(0x65, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser::GoHome()
{
InvokeHelper(0x66, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser::GoSearch()
{
InvokeHelper(0x67, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser::Navigate(
LPCTSTR URL,
VARIANT* Flags,
VARIANT* TargetFrameName,
VARIANT* PostData,
VARIANT* Headers)
{
static BYTE parms[] =
VTS_BSTR VTS_PVARIANT VTS_PVARIANT
VTS_PVARIANT VTS_PVARIANT;
InvokeHelper(0x68, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
URL, Flags, TargetFrameName, PostData, Headers);
}
void CWebBrowser::Refresh()
{
InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY,
NULL, NULL);
}
void CWebBrowser::Refresh2(VARIANT* Level)
{
static BYTE parms[] = VTS_PVARIANT;
InvokeHelper(0x69, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Level);
}
void CWebBrowser::Stop()
{
InvokeHelper(0x6a, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
LPDISPATCH CWebBrowser::GetApplication()
{
LPDISPATCH result;
InvokeHelper(0xc8, DISPATCH_PROPERTYGET, VT_DISPATCH,
(void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser::GetParent()
{
LPDISPATCH result;
InvokeHelper(0xc9, DISPATCH_PROPERTYGET, VT_DISPATCH,
(void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser::GetContainer()
{
LPDISPATCH result;
InvokeHelper(0xca, DISPATCH_PROPERTYGET, VT_DISPATCH,
(void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser::GetDocument()
{
LPDISPATCH result;
InvokeHelper(0xcb, DISPATCH_PROPERTYGET, VT_DISPATCH,
(void*)&result, NULL);
return result;
}
BOOL CWebBrowser::GetTopLevelContainer()
{
BOOL result;
InvokeHelper(0xcc, DISPATCH_PROPERTYGET, VT_BOOL,
(void*)&result, NULL);
return result;
}
CString CWebBrowser::GetType()
{
CString result;
InvokeHelper(0xcd, DISPATCH_PROPERTYGET, VT_BSTR,
(void*)&result, NULL);
return result;
}
long CWebBrowser::GetLeft()
{
long result;
InvokeHelper(0xce, DISPATCH_PROPERTYGET, VT_I4,
(void*)&result, NULL);
return result;
}
void CWebBrowser::SetLeft(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0xce, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
parms, nNewValue);
}
long CWebBrowser::GetTop()
{
long result;
InvokeHelper(0xcf, DISPATCH_PROPERTYGET, VT_I4,
(void*)&result, NULL);
return result;
}
void CWebBrowser::SetTop(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0xcf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
parms, nNewValue);
}
long CWebBrowser::GetWidth()
{
long result;
InvokeHelper(0xd0, DISPATCH_PROPERTYGET, VT_I4,
(void*)&result, NULL);
return result;
}
void CWebBrowser::SetWidth(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0xd0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
parms, nNewValue);
}
long CWebBrowser::GetHeight()
{
long result;
InvokeHelper(0xd1, DISPATCH_PROPERTYGET, VT_I4,
(void*)&result, NULL);
return result;
}
void CWebBrowser::SetHeight(long nNewValue)
{
static BYTE parms[] = VTS_I4;
InvokeHelper(0xd1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL,
parms, nNewValue);
}
CString CWebBrowser::GetLocationName()
{
CString result;
InvokeHelper(0xd2, DISPATCH_PROPERTYGET, VT_BSTR,
(void*)&result, NULL);
return result;
}
CString CWebBrowser::GetLocationURL()
{
CString result;
InvokeHelper(0xd3, DISPATCH_PROPERTYGET, VT_BSTR,
(void*)&result, NULL);
return result;
}
BOOL CWebBrowser::GetBusy()
{
BOOL result;
InvokeHelper(0xd4, DISPATCH_PROPERTYGET, VT_BOOL,
(void*)&result, NULL);
return result;
}
Все методы, определенные в файле webbrowser.cpp, вызывают вспомогательный метод InvokeHelper класса CWnd, передавая ему различные параметры. В зависимости от своих параметров, метод InvokeHelper, в свою очередь, вызывает те или иные методы органа управления ActiveX. В нашем случае в качестве этого органа управления выступает Microsoft Web Browser Control.
Подробное описание Microsoft Web Browser Control, включая описание управляющего класса, смотрите на странице http://www.microsoft.com сервера WWW компании Microsoft. В следующей таблице мы дадим краткое описание основных методов класса CWebBrowser:
Метод |
Описание |
GetBusy |
Позволяет узнать, выполняет ли орган управления Microsoft Web Browser Control в данный момент времени загрузку данных из Internet |
GetHeight |
Определяет вертикальный размер окна (frame window), содержащего орган управления Web Browser |
GetLeft |
Определяет расстояние между внутренней левой стороной органа управления Web Browser и левой стороной его контейнера (содержащего его окна) |
GetLocationName |
Определяет имя ресурса Internet, который отображается органом управления Microsoft Web Browser Control |
GetLocationURL |
Определяет URL имя ресурса Internet, который отображается органом управления Microsoft Web Browser Control |
GetTop |
Определяет расстояние между внутренней верхней стороной органа управления Web Browser и верхней стороной его контейнера |
GetWidth |
Определяет горизонтальный размер окна (frame window), содержащего орган управления Web Browser |
GoBack |
Вернуться к просмотру предыдущей страницы WWW |
GoForward |
Перейти к просмотру следующей страницы WWW. Этот метод можно использовать, если вы вернулись к просмотру предыдущей страницы WWW с помощью метода GoBack |
GoHome |
Перейти к просмотру домашней страницы WWW. Адрес домашней страницы Microsoft Internet Explorer можно изменить через панель управления Control Panel, запустив приложение Internet. Приложение Internet отображает на экране диалоговую панель Internet Properties. В ней надо выбрать страницу Navigation, а затем выбрать из списка Page строку Start Page (начальная или домашняя страница) и ввести ее адрес в поле Address |
GoSearch |
Перейти к просмотру поисковой страницы WWW. Адрес поисковой страницы Microsoft Internet Explorer можно изменить через панель управления Control Panel, запустив приложение Internet |
Navigate |
Перейти к просмотру страницы WWW с заданным адресом. Именно этот метод мы будем использовать в приложении Look чтобы перейти к просмотру определенной страницы WWW |
Refresh, Refresh2 |
Обновить информацию текущей страницы WWW |
SetHeight |
Устанавливает вертикальный размер окна (frame window), содержащего орган управления Web Browser |
SetLeft |
Устанавливает расстояние между внутренней левой стороной органа управления Web Browser и левой стороной его контейнера |
SetTop |
Устанавливает расстояние между внутренней верхней стороной органа управления Web Browser и верхней стороной его контейнера |
SetWidth |
Устанавливает горизонтальный размер окна (frame window), содержащего орган управления Web Browser |
Stop |
Остановить загрузку страницы WWW |
Класс CWebBrowser, представляющий орган управления Microsoft Web Browser Control, также содержит целый ряд методов, которые вызываются в различных ситуациях. В следующей таблице мы привели список этих методов и дали им краткие описания.
Метод |
Описание |
BeforeNavigate |
Вызывается когда навигатор переходит к просмотру другого URL |
CommandStateChange |
Выполнение определенных команд разрешено или запрещено |
DownloadBegin |
Началась загрузка ресурса |
DownloadComplete |
Загрузка ресурса завершается, останавливается или прерывается |
FrameBeforeNavigate |
Навигатор приступает к загрузке нового ресурса с другим адресом URL. Происходит, если на данной странице WWW присутствуют фреймы |
FrameNavigateComplete |
Вызывается после того, как навигатор загрузит новый ресурс. |
FrameNewWindow |
Создано новое окно. Происходит, если на данной странице WWW присутствуют фреймы |
NavigateComplete |
Навигатор успешно загрузил новый ресурс |
NewWindow |
Новое окно должно быть создано для отображения ресурсса |
ProgressChange |
Изменилось состояние процесса загрузки |
Quit |
Приложение Internet Explorer готово завершиться |
StatusTextChange |
Изменяется текст в панели состояния |
TitleChange |
Заголовок документа в окне навигатора получен или изменен |
WindowActivate |
Окно навигатора получило упраавление |
WindowMove |
Окно навигатора переместилось |
WindowResize |
Изменен размер окна навигатора |