]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/contrib/iewin/wxactivex.h
Faster Deselect
[wxWidgets.git] / wxPython / contrib / iewin / wxactivex.h
index aa1f16788aeab68718b002c0e999aacf1d779f44..4c88a1d3f32862cb91927460f58f81ca85c6c4b2 100644 (file)
@@ -50,7 +50,7 @@ template <class I> class wxAutoOleInterface
        };
 
        // copy constructor
-    explicit wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL)
+    wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL)
     {
                operator = (ti);
     }
@@ -261,6 +261,36 @@ class wxOleInit
 
 class wxActiveX : public wxWindow {
 public:
+    ////////////////////////////////////////
+    // type stuff
+       class ParamX // refer to ELEMDESC, IDLDESC in MSDN
+       {
+       public:
+               USHORT      flags;
+        bool isPtr, isSafeArray;
+               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<ParamX>  ParamXArray;
+
+    class FuncX // refer to FUNCDESC in MSDN
+    {
+    public:
+        wxString    name;
+        MEMBERID    memid;
+               bool            hasOut;
+
+               ParamXArray     params;
+    };
+
+    typedef vector<FuncX> FuncXArray;
+    typedef map<MEMBERID, int>  MemberIdList;
+
     wxActiveX(wxWindow * parent, REFCLSID clsid, wxWindowID id = -1,
         const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize,
@@ -276,12 +306,15 @@ public:
        void CreateActiveX(REFCLSID clsid);
     void CreateActiveX(LPOLESTR progId);
 
-       void GetTypeInfo();
-       void GetTypeInfo(ITypeInfo *ti, bool defEventSink);
+    // expose type info
+    inline int GetEventCount() const {return m_events.size();}
+    const FuncX& GetEvent(int idx) const;
 
        HRESULT ConnectAdvise(REFIID riid, IUnknown *eventSink);
 
        void OnSize(wxSizeEvent&);
+    void OnPaint(wxPaintEvent& event);
+    void OnMouse(wxMouseEvent& event);
        void OnSetFocus(wxFocusEvent&);
     void OnKillFocus(wxFocusEvent&);
 
@@ -303,6 +336,7 @@ protected:
 
                                             m_oleInPlaceActiveObject;
     wxAutoOleInterface<IOleDocumentView>       m_docView;
+    wxAutoOleInterface<IViewObject>            m_viewObject;
        HWND m_oleObjectHWND;
     bool m_bAmbientUserMode;
     DWORD m_docAdviseCookie;
@@ -310,41 +344,19 @@ 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<ParamX>  ParamXArray;
-
-    class FuncX // refer to FUNCDESC in MSDN
-    {
-    public:
-        wxString    name;
-        MEMBERID    memid;
-               bool            hasOut;
-
-               ParamXArray     params;
-    };
+       void GetTypeInfo();
+       void GetTypeInfo(ITypeInfo *ti, bool defEventSink);
 
-    typedef vector<FuncX> FuncXArray;
-    typedef map<MEMBERID, int>  MemberIdList;
 
     // events
     FuncXArray      m_events;
     MemberIdList    m_eventsIdx;
+
+    WXLRESULT MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
 };
 
 // events
-class wxActiveXEvent : public wxNotifyEvent
+class wxActiveXEvent : public wxCommandEvent
 {
 private:
     friend class wxActiveXEvents;
@@ -355,18 +367,23 @@ public:
 
     virtual wxEvent *Clone() const { return new wxActiveXEvent(*this); }
 
+    wxString EventName();
     int ParamCount() const;
+    wxString ParamType(int idx);
+    wxString ParamName(int idx);
     wxVariant  operator[] (int idx) const;
     wxVariant& operator[] (int idx);
     wxVariant  operator[] (wxString name) const;
     wxVariant& operator[] (wxString name);
 };
 
-const wxEventType& RegisterActiveXEvent(wxString eventName);
+const wxEventType& RegisterActiveXEvent(const wxChar *eventName);
+const wxEventType& RegisterActiveXEvent(DISPID event);
 
 typedef void (wxEvtHandler::*wxActiveXEventFunction)(wxActiveXEvent&);
 
-#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventName), id, -1, (wxObjectEventFunction) (wxEventFunction) (wxActiveXEventFunction) & fn, (wxObject *) NULL ),
+#define EVT_ACTIVEX(id, eventName, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(wxT(eventName)), id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxActiveXEventFunction, & fn ), (wxObject *) NULL ),
+#define EVT_ACTIVEX_DISPID(id, eventDispId, fn) DECLARE_EVENT_TABLE_ENTRY(RegisterActiveXEvent(eventDispId), id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxActiveXEventFunction, & fn ), (wxObject *) NULL ),
 
 //util
 bool MSWVariantToVariant(VARIANTARG& va, wxVariant& vx);