3,245
社区成员
发帖
与我相关
我的任务
分享
void CBrowserWnd::Init()
{
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(paint_manager_.FindControl(_T("ie")));
if( pActiveXUI ) {
IWebBrowser2* pWebBrowser = NULL;
pActiveXUI->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser);
if( pWebBrowser != NULL ) {
pWebBrowser->Navigate(L"http://www.baidu.com",NULL,NULL,NULL,NULL);
pWebBrowser->Release();
}
}
}
void CBrowserWnd::Init()
{
CActiveXUI* pActiveXUI = static_cast<CActiveXUI*>(paint_manager_.FindControl(_T("ie")));
if( pActiveXUI ) {
IWebBrowser2* pWebBrowser = NULL;
pActiveXUI->GetControl(IID_IWebBrowser2, (void**)&pWebBrowser);
if( pWebBrowser != NULL ) {
BSTR url= _bstr_t(gourl_.c_str());
VARIANT* vt= new VARIANT;
vt->bstrVal = url;
IConnectionPointContainer* pCPC = NULL;
IConnectionPoint* pCP = NULL;
pWebBrowser->QueryInterface(IID_IConnectionPointContainer,(void**)&pCPC);
pCPC->FindConnectionPoint( DIID_DWebBrowserEvents2,&pCP);
DWORD dwCookie = 0;
CMyWebBrwoser2Event* events = new CMyWebBrwoser2Event(NewWindow3t);
pCP->Advise( (IUnknown*)(void*)events,&dwCookie);
pWebBrowser->Navigate(url,NULL,NULL,NULL,NULL);
pWebBrowser->Release();
}
}
}
bool _stdcall CALLBACK NewWindow3t(VARIANT_BOOL* Cannel,BSTR url){return true;}
#include <ExDispid.h>
#include <Exdisp.h>
typedef bool (WINAPI * NewWindow3)(VARIANT_BOOL* Cannel,BSTR url);
class CMyWebBrwoser2Event : public DWebBrowserEvents2
{
private:
NewWindow3 _sc;
public:
CMyWebBrwoser2Event(NewWindow3 n3)
:_sc(n3)
{
}
public: // IDispatch methods
STDMETHOD(QueryInterface)( REFIID riid, void **ppvObject)
{
HRESULT hr = E_NOINTERFACE;
if (riid == __uuidof(IDispatch))
{
*ppvObject = (IDispatch*)this;
AddRef();
hr = S_OK;
}
else if (riid == __uuidof(DWebBrowserEvents2))
{
*ppvObject = (DWebBrowserEvents2*)this;
AddRef();
hr = S_OK;
}
return hr;
}
STDMETHODIMP_(ULONG) AddRef(void)
{
return 1;
};
STDMETHODIMP_(ULONG) Release(void)
{
return 1;
}
STDMETHOD(GetTypeInfoCount)(UINT*)
{
return E_NOTIMPL;
}
STDMETHOD(GetTypeInfo)(UINT, LCID, ITypeInfo**)
{
return E_NOTIMPL;
}
STDMETHOD(GetIDsOfNames)(REFIID, LPOLESTR *rgszNames, UINT, LCID, DISPID *rgDispId)
{
return E_NOTIMPL;
}
STDMETHOD(Invoke)(DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS FAR* pDispParams,VARIANT FAR* pVarResult,EXCEPINFO FAR* pExcepInfo,unsigned int FAR* puArgErr)
{
HRESULT hr = S_OK;
if(dispIdMember == DISPID_DOCUMENTCOMPLETE)
{
}
if (dispIdMember == DISPID_NEWWINDOW3)
{
_sc((pDispParams->rgvarg[3].pboolVal),(pDispParams->rgvarg->bstrVal));
}
return hr;
}
};