Add wxActiveXContainer::QueryClientSiteInterface to allow customisation of ActiveX controls.

Closes #13784.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Steve Lamerton
2012-01-15 19:05:34 +00:00
parent 8ae52ef8cc
commit 1f7d05f019
3 changed files with 33 additions and 1 deletions

View File

@@ -169,6 +169,7 @@ public:
void OnSetFocus(wxFocusEvent&); void OnSetFocus(wxFocusEvent&);
void OnKillFocus(wxFocusEvent&); void OnKillFocus(wxFocusEvent&);
virtual bool MSWTranslateMessage(WXMSG* pMsg); virtual bool MSWTranslateMessage(WXMSG* pMsg);
virtual bool QueryClientSiteInterface(REFIID iid, void **_interface, const char *&desc);
protected: protected:
friend class FrameSite; friend class FrameSite;

View File

@@ -267,7 +267,7 @@ public:
}; };
wxIMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend); wxIMPLEMENT_DYNAMIC_CLASS(wxPDFMediaBackend, wxMediaBackend);
// Put this in one of your existing source files and then create a wxMediaCtrl with // Put this in one of your existing source files and then create a wxMediaCtrl with
wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, "myfile.pdf", wxID_ANY, wxMediaCtrl* mymediactrl = new wxMediaCtrl(this, "myfile.pdf", wxID_ANY,
wxDefaultPosition, wxSize(300,300), wxDefaultPosition, wxSize(300,300),
@@ -297,5 +297,18 @@ public:
Interface of ActiveX control. Interface of ActiveX control.
*/ */
wxActiveXContainer(wxWindow* parent, REFIID iid, IUnknown* pUnk); wxActiveXContainer(wxWindow* parent, REFIID iid, IUnknown* pUnk);
/**
Queries host's site for interface.
@param iid
The iid of the required interface.
@param _interface
Double pointer to outgoing interface. Supply your own interface if desired.
@param desc
The description of the outgoing interface.
@return bool
Return true if interface supplied else return false.
*/
virtual bool QueryClientSiteInterface(REFIID iid, void **_interface, const char *&desc);
}; };

View File

@@ -633,6 +633,10 @@ public:
return S_OK; return S_OK;
} }
friend bool QueryClientSiteInterface(FrameSite *self, REFIID iid, void **_interface, const char *&desc)
{
return self->m_window->QueryClientSiteInterface(iid,_interface,desc);
}
protected: protected:
wxActiveXContainer * m_window; wxActiveXContainer * m_window;
@@ -670,6 +674,7 @@ DEFINE_OLE_TABLE(FrameSite)
OLE_IINTERFACE(IOleDocumentSite) OLE_IINTERFACE(IOleDocumentSite)
OLE_IINTERFACE(IAdviseSink) OLE_IINTERFACE(IAdviseSink)
OLE_IINTERFACE(IOleControlSite) OLE_IINTERFACE(IOleControlSite)
OLE_INTERFACE_CUSTOM(QueryClientSiteInterface)
END_OLE_TABLE END_OLE_TABLE
@@ -1276,4 +1281,17 @@ bool wxActiveXContainer::MSWTranslateMessage(WXMSG* pMsg)
return wxWindow::MSWTranslateMessage(pMsg); return wxWindow::MSWTranslateMessage(pMsg);
} }
//---------------------------------------------------------------------------
// wxActiveXContainer::QueryClientSiteInterface
//
// Called in the host's site's query method for other interfaces.
//---------------------------------------------------------------------------
bool wxActiveXContainer::QueryClientSiteInterface(REFIID iid, void **_interface, const char *&desc)
{
wxUnusedVar(iid);
wxUnusedVar(_interface);
wxUnusedVar(desc);
return false;
}
#endif // wxUSE_ACTIVEX #endif // wxUSE_ACTIVEX