╨рчЁрсюЄър яЁшыюцхэшщ фы  Internet

╩ырёё 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

Изменен размер окна навигатора


╤юфхЁцрэшх Ёрчфхыр