X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c731eb47101d4656e5b736ce8e377830911bbe1d..f6f98ecccd755993c8ba6354281fad271917be25:/wxPython/contrib/iewin/wxactivex.h?ds=inline diff --git a/wxPython/contrib/iewin/wxactivex.h b/wxPython/contrib/iewin/wxactivex.h index 2d36e37541..f62ac9830e 100644 --- a/wxPython/contrib/iewin/wxactivex.h +++ b/wxPython/contrib/iewin/wxactivex.h @@ -6,10 +6,13 @@ #include #include +#include #include +#include #include #include #include +#include using namespace std; ////////////////////////////////////////// @@ -29,12 +32,12 @@ template class wxAutoOleInterface // Assumed to already have a AddRef() applied explicit wxAutoOleInterface(I *pInterface = NULL) : m_interface(pInterface) {} - // queries for an interface + // queries for an interface wxAutoOleInterface(REFIID riid, IUnknown *pUnk) : m_interface(NULL) { QueryInterface(riid, pUnk); }; - // queries for an interface + // queries for an interface wxAutoOleInterface(REFIID riid, IDispatch *pDispatch) : m_interface(NULL) { QueryInterface(riid, pDispatch); @@ -47,7 +50,7 @@ template class wxAutoOleInterface }; // copy constructor - explicit wxAutoOleInterface(const wxAutoOleInterface& ti) : m_interface(NULL) + wxAutoOleInterface(const wxAutoOleInterface& ti) : m_interface(NULL) { operator = (ti); } @@ -84,7 +87,7 @@ template class wxAutoOleInterface m_interface = NULL; }; - // queries for an interface + // queries for an interface HRESULT QueryInterface(REFIID riid, IUnknown *pUnk) { Free(); @@ -258,13 +261,24 @@ class wxOleInit class wxActiveX : public wxWindow { public: - wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1); - wxActiveX(wxWindow * parent, wxString progId, wxWindowID id = -1); + wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPanelNameStr); + wxActiveX(wxWindow * parent, wxString progId, wxWindowID id = -1, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPanelNameStr); virtual ~wxActiveX(); void CreateActiveX(REFCLSID clsid); void CreateActiveX(LPOLESTR progId); + void GetTypeInfo(); + void GetTypeInfo(ITypeInfo *ti, bool defEventSink); + HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink); void OnSize(wxSizeEvent&); @@ -275,6 +289,7 @@ public: protected: friend class FrameSite; + friend class wxActiveXEvents; typedef wxAutoOleInterface wxOleConnectionPoint; typedef pair wxOleConnection; @@ -295,6 +310,66 @@ protected: HRESULT AmbientPropertyChanged(DISPID dispid); + // type stuff + class ParamX // refer to ELEMDESC, IDLDESC in MSDN + { + public: + USHORT flags; + VARTYPE vt; + wxString name; + + inline bool IsIn() const {return (flags & IDLFLAG_FIN) != 0;} + inline bool IsOut() const {return (flags & IDLFLAG_FOUT) != 0;} + inline bool IsRetVal() const {return (flags & IDLFLAG_FRETVAL) != 0;} + }; + + typedef vector ParamXArray; + + class FuncX // refer to FUNCDESC in MSDN + { + public: + wxString name; + MEMBERID memid; + bool hasOut; + + ParamXArray params; + }; + + typedef vector FuncXArray; + typedef map MemberIdList; + + // events + FuncXArray m_events; + MemberIdList m_eventsIdx; }; +// events +class wxActiveXEvent : public wxNotifyEvent +{ +private: + friend class wxActiveXEvents; + + wxVariant m_params; + +public: + + virtual wxEvent *Clone() const { return new wxActiveXEvent(*this); } + + int ParamCount() const; + wxVariant operator[] (int idx) const; + wxVariant& operator[] (int idx); + wxVariant operator[] (wxString name) const; + wxVariant& operator[] (wxString name); +}; + +const wxEventType& RegisterActiveXEvent(wxChar *eventName); + +typedef void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent&); + +#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ), + +//util +bool MSWVariantToVariant(VARIANTARG& va, wxVariant& vx); +bool VariantToMSWVariant(wxVariant& vx, VARIANTARG& va); + #endif /* _IEHTMLWIN_H_ */