1 // Instance.h : Declaration of the CInstance
6 #include "resource.h" //
\83\81\83C
\83\93 \83V
\83\93\83{
\83\8b
9 #include "OverlappedWindow.h"
10 #include "commdialog.h"
12 /////////////////////////////////////////////////////////////////////////////
14 class ATL_NO_VTABLE CInstance :
15 public CComObjectRootEx<CComSingleThreadModel>,
16 public CStockPropImpl<CInstance, ISeraphyScriptTools_Instance, &IID_ISeraphyScriptTools_Instance, &LIBID_SERAPHYSCRIPTTOOLSLib>,
17 public CComControl<CInstance>,
18 public IPersistStreamInitImpl<CInstance>,
19 public IOleControlImpl<CInstance>,
20 public IOleObjectImpl<CInstance>,
21 public IOleInPlaceActiveObjectImpl<CInstance>,
22 public IViewObjectExImpl<CInstance>,
23 public IOleInPlaceObjectWindowlessImpl<CInstance>,
24 public ISupportErrorInfo,
25 public IConnectionPointContainerImpl<CInstance>,
26 public IPersistStorageImpl<CInstance>,
27 public ISpecifyPropertyPagesImpl<CInstance>,
28 public IQuickActivateImpl<CInstance>,
29 public IDataObjectImpl<CInstance>,
30 public IProvideClassInfo2Impl<&CLSID_SeraphyScriptTools_Instance, &DIID__ISeraphyScriptTools_InstanceEvents, &LIBID_SERAPHYSCRIPTTOOLSLib>,
31 public IPropertyNotifySinkCP<CInstance>,
32 public CComCoClass<CInstance, &CLSID_SeraphyScriptTools_Instance>
38 DECLARE_REGISTRY_RESOURCEID(IDR_INSTANCE)
40 DECLARE_PROTECT_FINAL_CONSTRUCT()
42 BEGIN_COM_MAP(CInstance)
43 COM_INTERFACE_ENTRY(ISeraphyScriptTools_Instance)
44 COM_INTERFACE_ENTRY(IDispatch)
45 COM_INTERFACE_ENTRY(IViewObjectEx)
46 COM_INTERFACE_ENTRY(IViewObject2)
47 COM_INTERFACE_ENTRY(IViewObject)
48 COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
49 COM_INTERFACE_ENTRY(IOleInPlaceObject)
50 COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
51 COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
52 COM_INTERFACE_ENTRY(IOleControl)
53 COM_INTERFACE_ENTRY(IOleObject)
54 COM_INTERFACE_ENTRY(IPersistStreamInit)
55 COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
56 COM_INTERFACE_ENTRY(ISupportErrorInfo)
57 COM_INTERFACE_ENTRY(IConnectionPointContainer)
58 COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
59 COM_INTERFACE_ENTRY(IQuickActivate)
60 COM_INTERFACE_ENTRY(IPersistStorage)
61 COM_INTERFACE_ENTRY(IDataObject)
62 COM_INTERFACE_ENTRY(IProvideClassInfo)
63 COM_INTERFACE_ENTRY(IProvideClassInfo2)
66 BEGIN_PROP_MAP(CInstance)
67 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
68 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
69 PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL)
71 // PROP_ENTRY("Property Description", dispid, clsid)
72 // PROP_PAGE(CLSID_StockColorPage)
75 BEGIN_CONNECTION_POINT_MAP(CInstance)
76 CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
77 END_CONNECTION_POINT_MAP()
79 BEGIN_MSG_MAP(CInstance)
80 CHAIN_MSG_MAP(CComControl<CInstance>)
81 DEFAULT_REFLECTION_HANDLER()
83 // Handler prototypes:
84 // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
85 // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
86 // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
91 STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
93 static const IID* arr[] =
95 &IID_ISeraphyScriptTools_Instance,
97 for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
99 if (IsEqualGUID(*arr[i], riid))
106 DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
108 // ISeraphyScriptTools_Instance
110 STDMETHOD(get_Version)(/*[out, retval]*/ double *pVal);
111 STDMETHOD(get_MousePosY)(/*[out, retval]*/ short *pVal);
112 STDMETHOD(get_MousePosX)(/*[out, retval]*/ short *pVal);
113 STDMETHOD(get_Keyboard)(/*[in]*/VARIANT vk, /*[out, retval]*/ BOOL *pVal);
114 _bstr_t m_bstr_ProfilePath;
115 STDMETHOD(get_WaitCursor)(/*[out, retval]*/ short *pVal);
116 STDMETHOD(put_WaitCursor)(/*[in]*/ short newVal);
117 STDMETHOD(get_MainFrame)(/*[out, retval]*/ VARIANT *pVal);
118 STDMETHOD(WaitEvent)(/*[in,optional]*/VARIANT varTim,/*[out,retval]*/VARIANT* pvarUnk);
119 STDMETHOD(CreateFrame)(/*[out,retval]*/VARIANT* pvarUnk);
120 STDMETHOD(get_Dialog)(/*[out, retval]*/ VARIANT *pVal);
122 HRESULT OnDraw(ATL_DRAWINFO& di)
124 RECT& rc = *(RECT*)di.prcBounds;
125 Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
127 SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
128 LPCTSTR pszText = _T("SeraphyScriptTools");
130 (rc.left + rc.right) / 2,
131 (rc.top + rc.bottom) / 2,
137 CComBSTR m_bstrCaption;
139 list<CComObject<COverlappedWindow>*> m_lstOverlappedWnd;
140 CComObject<CCommDialog>* m_pCommDlg;
141 CComObject<COverlappedWindow>* m_pMainWindow;
145 #endif //__INSTANCE_H_