};
// copy constructor
- explicit wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL)
+ wxAutoOleInterface(const wxAutoOleInterface<I>& ti) : m_interface(NULL)
{
operator = (ti);
}
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,
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&);
m_oleInPlaceActiveObject;
wxAutoOleInterface<IOleDocumentView> m_docView;
+ wxAutoOleInterface<IViewObject> m_viewObject;
HWND m_oleObjectHWND;
bool m_bAmbientUserMode;
DWORD m_docAdviseCookie;
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;
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);