Класс 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 |
€§¬ҐҐ а §¬Ґа ®Є ўЁЈ в®а |