OSDN Git Service

20021009版ソース
[seraphyscrtools/SeraphyScriptTools.git] / Instance.h
1 // Instance.h : Declaration of the CInstance
2
3 #ifndef __INSTANCE_H_
4 #define __INSTANCE_H_
5
6 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
7 #include <atlctl.h>
8 #include <list>
9 #include "OverlappedWindow.h"
10 #include "commdialog.h"
11
12 /////////////////////////////////////////////////////////////////////////////
13 // CInstance
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>
33 {
34 public:
35         CInstance();
36         void FinalRelease();
37
38 DECLARE_REGISTRY_RESOURCEID(IDR_INSTANCE)
39
40 DECLARE_PROTECT_FINAL_CONSTRUCT()
41
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)
64 END_COM_MAP()
65
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)
70         // Example entries
71         // PROP_ENTRY("Property Description", dispid, clsid)
72         // PROP_PAGE(CLSID_StockColorPage)
73 END_PROP_MAP()
74
75 BEGIN_CONNECTION_POINT_MAP(CInstance)
76         CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
77 END_CONNECTION_POINT_MAP()
78
79 BEGIN_MSG_MAP(CInstance)
80         CHAIN_MSG_MAP(CComControl<CInstance>)
81         DEFAULT_REFLECTION_HANDLER()
82 END_MSG_MAP()
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);
87
88
89
90 // ISupportsErrorInfo
91         STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
92         {
93                 static const IID* arr[] = 
94                 {
95                         &IID_ISeraphyScriptTools_Instance,
96                 };
97                 for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
98                 {
99                         if (IsEqualGUID(*arr[i], riid))
100                                 return S_OK;
101                 }
102                 return S_FALSE;
103         }
104
105 // IViewObjectEx
106         DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
107
108 // ISeraphyScriptTools_Instance
109 public:
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);
121
122         HRESULT OnDraw(ATL_DRAWINFO& di)
123         {
124                 RECT& rc = *(RECT*)di.prcBounds;
125                 Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
126
127                 SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
128                 LPCTSTR pszText = _T("SeraphyScriptTools");
129                 TextOut(di.hdcDraw, 
130                         (rc.left + rc.right) / 2, 
131                         (rc.top + rc.bottom) / 2, 
132                         pszText, 
133                         lstrlen(pszText));
134
135                 return S_OK;
136         }
137         CComBSTR m_bstrCaption;
138 protected:
139         list<CComObject<COverlappedWindow>*> m_lstOverlappedWnd;
140         CComObject<CCommDialog>* m_pCommDlg;
141         CComObject<COverlappedWindow>* m_pMainWindow;
142         int m_dWaitCursor;
143 };
144
145 #endif //__INSTANCE_H_