void IEHtmlWin::CreateBrowser() { SetTransparent(255); HRESULT hret; IUnknown *p; // Get IUnknown Interface hret = CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_ALL, IID_IUnknown, (void**)(&p)); wxASSERT(SUCCEEDED(hret)); // Get IOleObject interface hret = p->QueryInterface(IID_IViewObject, (void**)(&m_viewObject)); wxASSERT(SUCCEEDED(hret)); hret = p->QueryInterface(IID_IOleObject, (void**)(&m_oleObject)); wxASSERT(SUCCEEDED(hret)); FrameSite * c = new FrameSite(this); c->AddRef(); DWORD dwMiscStatus; m_oleObject->GetMiscStatus(DVASPECT_CONTENT, &dwMiscStatus); bool m_bSetClientSiteFirst = false; if (dwMiscStatus & OLEMISC_SETCLIENTSITEFIRST) { m_bSetClientSiteFirst = true; } bool m_bVisibleAtRuntime = true; if (dwMiscStatus & OLEMISC_INVISIBLEATRUNTIME) { m_bVisibleAtRuntime = false; } if (m_bSetClientSiteFirst) m_oleObject->SetClientSite(c->m_IOleClientSite); IPersistStreamInit * psInit = NULL; hret = p->QueryInterface(IID_IPersistStreamInit, (void**)(&psInit)); if (SUCCEEDED(hret) && psInit != NULL) { hret = psInit->InitNew(); wxASSERT(SUCCEEDED(hret)); } // Get IOleInPlaceObject interface hret = p->QueryInterface(IID_IOleInPlaceObject, (void**)(&m_oleInPlaceObject)); assert(SUCCEEDED(hret)); hret = m_oleInPlaceObject->GetWindow(&m_oleObjectHWND); wxASSERT(SUCCEEDED(hret)); ::SetActiveWindow(m_oleObjectHWND); int w, h; GetSize(&w, &h); RECT posRect; posRect.left = 0; posRect.top = 0; posRect.right = w; posRect.bottom = h; m_oleInPlaceObject->SetObjectRects(&posRect, &posRect); if (m_bVisibleAtRuntime) { hret = m_oleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, c->m_IOleClientSite, 0, (HWND)GetHWND(), &posRect); } if (!m_bSetClientSiteFirst) m_oleObject->SetClientSite(c->m_IOleClientSite); // Get IWebBrowser2 Interface hret = p->QueryInterface(IID_IWebBrowser2, (void**)(&m_webBrowser)); assert(SUCCEEDED(hret)); IConnectionPointContainer * cpContainer; hret = p->QueryInterface(IID_IConnectionPointContainer, (void**)(&cpContainer)); assert(SUCCEEDED(hret)); hret = cpContainer->FindConnectionPoint(DIID_DWebBrowserEvents2, &m_connectionPoint); assert(SUCCEEDED(hret)); m_connectionPoint->Advise(c->m_DWebBrowserEvents2, &m_adviseCookie); cpContainer->Release(); p->Release(); m_webBrowser->put_MenuBar(VARIANT_FALSE); m_webBrowser->put_AddressBar(VARIANT_FALSE); m_webBrowser->put_StatusBar(VARIANT_FALSE); m_webBrowser->put_ToolBar(VARIANT_FALSE); m_webBrowser->put_RegisterAsBrowser(VARIANT_TRUE); m_webBrowser->put_RegisterAsDropTarget(VARIANT_TRUE); }
static cgMSXML::IXMLDocument* XML_GetDocument( CGT_CDiagMsg* pdm, CG_CIECFront* pFront, const TCHAR* pszXMLFile, __int64* pOnOpenLastWriteFileTime ) { cgMSXML::IXMLDocument *pDoc = NULL; IStream *pStm = NULL; IPersistStreamInit *pPSI = NULL; HRESULT hr; // Create an empty XML document. hr = CoCreateInstance(cgMSXML::CLSID_XMLDocument, NULL, CLSCTX_INPROC_SERVER, cgMSXML::IID_IXMLDocument, (void**)&pDoc); if(FAILED(hr) || !pDoc) goto fatalError; //try to open the disk or lib file: if(!LoadFileToIStream(pdm, pFront, pszXMLFile, &pStm, pOnOpenLastWriteFileTime)) return NULL; assert(pStm); // Get the IPersistStreamInit interface to the XML doc. hr = pDoc->QueryInterface(IID_IPersistStreamInit, (void **)&pPSI); if(FAILED(hr) || !pPSI) goto fatalError; // Init the XML doc from the stream. hr = pPSI->Load(pStm); if(FAILED(hr)) { // Print error information ! cgMSXML::IXMLError *pXMLError = NULL ; cgMSXML::_xml_error xmle; hr = pPSI->QueryInterface(cgMSXML::IID_IXMLError, (void **)&pXMLError); if(FAILED(hr) || !pXMLError) goto fatalError; hr = pXMLError->GetErrorInfo(&xmle); if(FAILED(hr)) goto fatalError; pXMLError->Release(); //different error message formats //if found string is ??? xmle._pszExpected seem to be a //preformated message ready to dump if(!wcscmp(xmle._pszFound, L"???")) { pdm->msg3(CG_E_XML_PARSE_ERROR, NULL, pszXMLFile, pdm->jot1()<<((int)xmle._nLine), pdm->jot2()<<xmle._pszExpected); } else { pdm->msg3(CG_E_XML_PARSE_ERROR, NULL, pszXMLFile, pdm->jot1()<<((int)xmle._nLine), pdm->jot2()<<xmle._pszFound); } SysFreeString(xmle._pszFound); SysFreeString(xmle._pszExpected); SysFreeString(xmle._pchBuf); pDoc->Release(); pDoc = NULL; } // Release any used interfaces. if(pPSI) pPSI->Release(); if(pStm) pStm->Release(); return pDoc; fatalError: pdm->sysErr(hr, NULL, _T("CLSID_XMLDocument for file: "), pszXMLFile); return NULL; }
bool CActiveXUI::DoCreateControl() { ReleaseControl(); // At this point we'll create the ActiveX control m_bCreated = true; IOleControl* pOleControl = NULL; HRESULT Hr = -1; if( !m_sModuleName.IsEmpty() ) { HMODULE hModule = ::LoadLibrary((LPCTSTR)m_sModuleName); if( hModule != NULL ) { IClassFactory* aClassFactory = NULL; DllGetClassObjectFunc aDllGetClassObjectFunc = (DllGetClassObjectFunc)::GetProcAddress(hModule, "DllGetClassObject"); Hr = aDllGetClassObjectFunc(m_clsid, IID_IClassFactory, (LPVOID*)&aClassFactory); if( SUCCEEDED(Hr) ) { Hr = aClassFactory->CreateInstance(NULL, IID_IOleObject, (LPVOID*)&pOleControl); } aClassFactory->Release(); } } if( FAILED(Hr) ) { Hr = ::CoCreateInstance(m_clsid, NULL, CLSCTX_ALL, IID_IOleControl, (LPVOID*)&pOleControl); } ASSERT(SUCCEEDED(Hr)); if( FAILED(Hr) ) return false; pOleControl->QueryInterface(IID_IOleObject, (LPVOID*) &m_pUnk); pOleControl->Release(); if( m_pUnk == NULL ) return false; // Create the host too m_pControl = new CActiveXCtrl(); m_pControl->m_pOwner = this; // More control creation stuff DWORD dwMiscStatus = 0; m_pUnk->GetMiscStatus(DVASPECT_CONTENT, &dwMiscStatus); IOleClientSite* pOleClientSite = NULL; m_pControl->QueryInterface(IID_IOleClientSite, (LPVOID*) &pOleClientSite); CSafeRelease<IOleClientSite> RefOleClientSite = pOleClientSite; // Initialize control if( (dwMiscStatus & OLEMISC_SETCLIENTSITEFIRST) != 0 ) m_pUnk->SetClientSite(pOleClientSite); IPersistStreamInit* pPersistStreamInit = NULL; m_pUnk->QueryInterface(IID_IPersistStreamInit, (LPVOID*) &pPersistStreamInit); if( pPersistStreamInit != NULL ) { Hr = pPersistStreamInit->InitNew(); pPersistStreamInit->Release(); } if( FAILED(Hr) ) return false; if( (dwMiscStatus & OLEMISC_SETCLIENTSITEFIRST) == 0 ) m_pUnk->SetClientSite(pOleClientSite); // Grab the view... Hr = m_pUnk->QueryInterface(IID_IViewObjectEx, (LPVOID*) &m_pControl->m_pViewObject); if( FAILED(Hr) ) Hr = m_pUnk->QueryInterface(IID_IViewObject2, (LPVOID*) &m_pControl->m_pViewObject); if( FAILED(Hr) ) Hr = m_pUnk->QueryInterface(IID_IViewObject, (LPVOID*) &m_pControl->m_pViewObject); // Activate and done... m_pUnk->SetHostNames(OLESTR("UIActiveX"), NULL); if( m_pManager != NULL ) m_pManager->SendNotify((CControlUI*)this, _T("showactivex"), 0, 0, false); if( (dwMiscStatus & OLEMISC_INVISIBLEATRUNTIME) == 0 ) { Hr = m_pUnk->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, pOleClientSite, 0, m_pManager->GetPaintWindow(), &m_rcItem); //::RedrawWindow(m_pManager->GetPaintWindow(), &m_rcItem, NULL, RDW_INVALIDATE | RDW_UPDATENOW | RDW_ERASE | RDW_INTERNALPAINT | RDW_FRAME); } IObjectWithSite* pSite = NULL; m_pUnk->QueryInterface(IID_IObjectWithSite, (LPVOID*) &pSite); if( pSite != NULL ) { pSite->SetSite(static_cast<IOleClientSite*>(m_pControl)); pSite->Release(); } return SUCCEEDED(Hr); }
//--------------------------------------------------------------------------- void __fastcall TAboutDialog::LoadThirdParty() { TWebBrowserEx * ThirdPartyWebBrowser = CreateBrowserViewer(ThirdPartyPanel, L""); reinterpret_cast<TLabel *>(ThirdPartyWebBrowser)->Color = clBtnFace; ThirdPartyWebBrowser->Navigate(L"about:blank"); while (ThirdPartyWebBrowser->ReadyState < ::READYSTATE_INTERACTIVE) { Application->ProcessMessages(); } std::unique_ptr<TFont> DefaultFont(new TFont()); UnicodeString ThirdParty; ThirdParty += L"<!DOCTYPE html>\n" L"<meta charset=\"utf-8\">\n" L"<html>\n" L"<head>\n" L"<style>\n" L"\n" L"body\n" L"{\n" L" font-family: '" + DefaultFont->Name + L"';\n" L" margin: 0.5em;\n" L" background-color: " + ColorToWebColorStr(Color) + L";\n" L"}\n" L"\n" L"body\n" L"{\n" L" font-size: " + IntToStr(DefaultFont->Size) + L"pt;\n" L"}\n" L"\n" L"p\n" L"{\n" L" margin-top: 0;\n" L" margin-bottom: 1em;\n" L"}\n" L"\n" L"a, a:visited, a:hover, a:visited, a:current\n" L"{\n" L" color: " + ColorToWebColorStr(LinkColor) + L";\n" L"}\n" L"</style>\n" L"</head>\n" L"<body>\n"; UnicodeString Br = "<br/>\n"; AddPara(ThirdParty, LoadStr(ABOUT_THIRDPARTY_HEADER)); AddPara(ThirdParty, FMTLOAD(PUTTY_BASED_ON, (LoadStr(PUTTY_VERSION))) + Br + LoadStr(PUTTY_COPYRIGHT) + Br + CreateLink(LoadStr(PUTTY_LICENSE_URL), LoadStr(ABOUT_THIRDPARTY_LICENSE)) + Br + CreateLink(LoadStr(PUTTY_URL))); #ifndef NO_FILEZILLA UnicodeString OpenSSLVersionText = GetOpenSSLVersionText(); CutToChar(OpenSSLVersionText, L' ', true); // "OpenSSL" UnicodeString OpenSSLVersion = CutToChar(OpenSSLVersionText, L' ', true); CutToChar(OpenSSLVersionText, L' ', true); // day CutToChar(OpenSSLVersionText, L' ', true); // month UnicodeString OpenSSLYear = CutToChar(OpenSSLVersionText, L' ', true); AddPara(ThirdParty, FMTLOAD(OPENSSL_BASED_ON, (OpenSSLVersion)) + Br + FMTLOAD(OPENSSL_COPYRIGHT2, (OpenSSLYear)) + Br + CreateLink(LoadStr(OPENSSL_URL))); AddPara(ThirdParty, LoadStr(FILEZILLA_BASED_ON2) + Br + LoadStr(FILEZILLA_COPYRIGHT2) + Br + CreateLink(LoadStr(FILEZILLA_URL))); #endif AddPara(ThirdParty, FMTLOAD(NEON_BASED_ON, (NeonVersion())) + Br + LoadStr(NEON_COPYRIGHT) + Br + CreateLink(LoadStr(NEON_URL))); #define EXPAT_LICENSE_URL L"license:expat" AddPara(ThirdParty, FMTLOAD(EXPAT_BASED_ON, (ExpatVersion())) + Br + CreateLink(EXPAT_LICENSE_URL, LoadStr(ABOUT_THIRDPARTY_LICENSE)) + Br + CreateLink(LoadStr(EXPAT_URL))); AddBrowserLinkHandler(ThirdPartyWebBrowser, EXPAT_LICENSE_URL, ExpatLicenceHandler); #ifndef NO_COMPONENTS AddPara(ThirdParty, FMTLOAD(ABOUT_TOOLBAR2000, (Toolbar2000Version)) + Br + LoadStr(ABOUT_TOOLBAR2000_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_TOOLBAR2000_URL))); AddPara(ThirdParty, FMTLOAD(ABOUT_TBX, (TBXVersionString)) + Br + LoadStr(ABOUT_TBX_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_TBX_URL))); AddPara(ThirdParty, LoadStr(ABOUT_FILEMANAGER) + Br + LoadStr(ABOUT_FILEMANAGER_COPYRIGHT)); #endif UnicodeString JclVersion = FormatVersion(JclVersionMajor, JclVersionMinor, JclVersionRelease); AddPara(ThirdParty, FMTLOAD(ABOUT_JCL, (JclVersion)) + Br + CreateLink(LoadStr(ABOUT_JCL_URL))); AddPara(ThirdParty, LoadStr(ABOUT_PNG) + Br + LoadStr(ABOUT_PNG_COPYRIGHT) + Br + CreateLink(LoadStr(ABOUT_PNG_URL))); ThirdParty += L"</body>\n" L"</html>\n"; std::unique_ptr<TMemoryStream> ThirdPartyStream(new TMemoryStream()); UTF8String ThirdPartyUTF8 = UTF8String(ThirdParty); ThirdPartyStream->Write(ThirdPartyUTF8.c_str(), ThirdPartyUTF8.Length()); ThirdPartyStream->Seek(0, 0); // For stream-loaded document, when set only after loading from OnDocumentComplete, // browser stops working SetBrowserDesignModeOff(ThirdPartyWebBrowser); TStreamAdapter * ThirdPartyStreamAdapter = new TStreamAdapter(ThirdPartyStream.get(), soReference); IPersistStreamInit * PersistStreamInit = NULL; if (ALWAYS_TRUE(ThirdPartyWebBrowser->Document != NULL) && SUCCEEDED(ThirdPartyWebBrowser->Document->QueryInterface(IID_IPersistStreamInit, (void **)&PersistStreamInit)) && ALWAYS_TRUE(PersistStreamInit != NULL)) { PersistStreamInit->Load(static_cast<_di_IStream>(*ThirdPartyStreamAdapter)); } }