OSDN Git Service

ObjectMap, ObjectVectorの値をByRef外しするようにした。他、ソースコード整形
[seraphyscrtools/SeraphyScriptTools.git] / Instance.h
1 // Instance.h : Declaration of the CInstance
2
3 #pragma once
4
5 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
6 #include <atlctl.h>
7 #include <list>
8 #include "OverlappedWindow.h"
9 #include "commdialog.h"
10
11 /////////////////////////////////////////////////////////////////////////////
12 // CInstance
13 class ATL_NO_VTABLE CInstance :
14         public CComObjectRootEx<CComSingleThreadModel>,
15         public CComCoClass<CInstance, &CLSID_SeraphyScriptTools_Instance>,
16         public ISupportErrorInfoImpl<&IID_ISeraphyScriptTools_Instance>,
17         public CComControl<CInstance>,
18         public CStockPropImpl<CInstance, ISeraphyScriptTools_Instance, &IID_ISeraphyScriptTools_Instance, &LIBID_SERAPHYSCRIPTTOOLSLib>,
19         public IPersistStreamInitImpl<CInstance>,
20         public IOleControlImpl<CInstance>,
21         public IOleObjectImpl<CInstance>,
22         public IOleInPlaceActiveObjectImpl<CInstance>,
23         public IViewObjectExImpl<CInstance>,
24         public IOleInPlaceObjectWindowlessImpl<CInstance>,
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 {
33 public:
34         HRESULT FinalConstruct();
35         void FinalRelease();
36
37         DECLARE_REGISTRY_RESOURCEID(IDR_INSTANCE)
38
39         DECLARE_PROTECT_FINAL_CONSTRUCT()
40
41         BEGIN_COM_MAP(CInstance)
42                 COM_INTERFACE_ENTRY(ISeraphyScriptTools_Instance)
43                 COM_INTERFACE_ENTRY(IDispatch)
44                 COM_INTERFACE_ENTRY(IViewObjectEx)
45                 COM_INTERFACE_ENTRY(IViewObject2)
46                 COM_INTERFACE_ENTRY(IViewObject)
47                 COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
48                 COM_INTERFACE_ENTRY(IOleInPlaceObject)
49                 COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
50                 COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
51                 COM_INTERFACE_ENTRY(IOleControl)
52                 COM_INTERFACE_ENTRY(IOleObject)
53                 COM_INTERFACE_ENTRY(IPersistStreamInit)
54                 COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
55                 COM_INTERFACE_ENTRY(ISupportErrorInfo)
56                 COM_INTERFACE_ENTRY(IConnectionPointContainer)
57                 COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
58                 COM_INTERFACE_ENTRY(IQuickActivate)
59                 COM_INTERFACE_ENTRY(IPersistStorage)
60                 COM_INTERFACE_ENTRY(IDataObject)
61                 COM_INTERFACE_ENTRY(IProvideClassInfo)
62                 COM_INTERFACE_ENTRY(IProvideClassInfo2)
63         END_COM_MAP()
64
65         BEGIN_PROP_MAP(CInstance)
66                 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
67                 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
68                 PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL)
69                 // Example entries
70                 // PROP_ENTRY("Property Description", dispid, clsid)
71                 // PROP_PAGE(CLSID_StockColorPage)
72         END_PROP_MAP()
73
74         BEGIN_CONNECTION_POINT_MAP(CInstance)
75                 CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
76         END_CONNECTION_POINT_MAP()
77
78         BEGIN_MSG_MAP(CInstance)
79                 CHAIN_MSG_MAP(CComControl<CInstance>)
80                 DEFAULT_REFLECTION_HANDLER()
81         END_MSG_MAP()
82         // Handler prototypes:
83         //  LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
84         //  LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
85         //  LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
86
87         // IViewObjectEx
88         DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
89
90         // ISeraphyScriptTools_Instance
91 public:
92         STDMETHOD(get_Version)(/*[out, retval]*/ double *pVal);
93         STDMETHOD(get_MousePosY)(/*[out, retval]*/ long *pVal);
94         STDMETHOD(get_MousePosX)(/*[out, retval]*/ long *pVal);
95         STDMETHOD(get_Keyboard)(/*[in]*/VARIANT vk, /*[out, retval]*/ BOOL *pVal);
96         _bstr_t m_bstr_ProfilePath;
97         STDMETHOD(get_WaitCursor)(/*[out, retval]*/ short *pVal);
98         STDMETHOD(put_WaitCursor)(/*[in]*/ short newVal);
99         STDMETHOD(get_MainFrame)(/*[out, retval]*/ VARIANT *pVal);
100         STDMETHOD(WaitEvent)(/*[in,optional]*/VARIANT varTim,/*[out,retval]*/VARIANT* pvarUnk);
101         STDMETHOD(CreateFrame)(/*[out,retval]*/VARIANT* pvarUnk);
102         STDMETHOD(get_Dialog)(/*[out, retval]*/ VARIANT *pVal);
103
104 protected:
105         HRESULT OnDraw(ATL_DRAWINFO& di)
106         {
107                 RECT& rc = *(RECT*)di.prcBounds;
108                 Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
109
110                 SetTextAlign(di.hdcDraw, TA_CENTER | TA_BASELINE);
111                 LPCTSTR pszText = _T("SeraphyScriptTools");
112                 TextOut(di.hdcDraw,
113                         (rc.left + rc.right) / 2,
114                         (rc.top + rc.bottom) / 2,
115                         pszText,
116                         lstrlen(pszText));
117
118                 return S_OK;
119         }
120
121 public:
122         CComBSTR m_bstrCaption; // FIXME: protected\82É\82·\82é
123
124 protected:
125         void PurgeUnusedWindows();
126         std::list<CComObject<COverlappedWindow>*> m_lstOverlappedWnd;
127         CComObject<CCommDialog>* m_pCommDlg; //FIXME: CComPtr\82Ö
128         CComObject<COverlappedWindow>* m_pMainWindow; //FIXME: CComPtr\82Ö
129         int m_dWaitCursor;
130 };