--- /dev/null
+#ifndef EVENTSINK_H\r
+#define EVENTSINK_H\r
+\r
+// The following can also be found in exdispid.h (except MinGW)\r
+#define DISPID_STATUSTEXTCHANGE 102\r
+#define DISPID_DOWNLOADCOMPLETE 104\r
+#define DISPID_COMMANDSTATECHANGE 105\r
+#define DISPID_DOWNLOADBEGIN 106\r
+#define DISPID_PROGRESSCHANGE 108\r
+#define DISPID_PROPERTYCHANGE 112\r
+#define DISPID_TITLECHANGE 113\r
+#define DISPID_BEFORENAVIGATE2 250\r
+#define DISPID_NEWWINDOW2 251\r
+#define DISPID_NAVIGATECOMPLETE2 252\r
+#define DISPID_DOCUMENTCOMPLETE 259\r
+\r
+\r
+class CMainFrame; // Forward declaration\r
+\r
+///////////////////////////////////////////////\r
+// About the CEventSink class.\r
+// The CEventSink implements the event sink for our browser. An Event Sink\r
+// provides a mechanism to respond to events triggered by an ActiveX control.\r
+// The ActiveX browser is the event source, and CMainFrame is the event sink.\r
+class CEventSink : public IDispatch\r
+{\r
+public:\r
+ CEventSink();\r
+ void SetSink(CMainFrame* pSink) {m_pSink = pSink;}\r
+\r
+ // IUnknown Methods\r
+ STDMETHODIMP QueryInterface(REFIID riid, void** ppvObject);\r
+ STDMETHODIMP_(ULONG) AddRef();\r
+ STDMETHODIMP_(ULONG) Release();\r
+\r
+ // IDispatch Methods\r
+ STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR** rgszNames, unsigned int cNames, LCID lcid, DISPID* rgdispid);\r
+ STDMETHODIMP GetTypeInfo(unsigned int itinfo, LCID lcid, ITypeInfo** pptinfo);\r
+ STDMETHODIMP GetTypeInfoCount(unsigned int* pctinfo);\r
+ STDMETHODIMP Invoke(DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pdispparams, VARIANT* pvarResult, EXCEPINFO* pexecinfo, unsigned int* puArgErr);\r
+\r
+private:\r
+ ULONG m_cRefs; // ref count\r
+ CMainFrame* m_pSink; // Send the notifications here\r
+};\r
+\r
+#endif // EVENTSINK_H\r