OSDN Git Service

CLSIDの変更
[seraphyscrtools/SeraphyScriptTools.git] / Control.h
1 // Control.h : CControl \82Ì\90é\8c¾
2
3 #pragma once
4
5 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
6 #include "treeitem.h"
7
8 /////////////////////////////////////////////////////////////////////////////
9 // CControl
10 class ATL_NO_VTABLE CControl :
11         public CComObjectRootEx<CComSingleThreadModel>,
12         public CComCoClass<CControl, &CLSID_Control>,
13         public ISupportErrorInfoImpl<&IID_IControl>,
14         public IConnectionPointContainerImpl<CControl>,
15         public IDispatchImpl<IControl, &IID_IControl, &LIBID_SERAPHYSCRIPTTOOLSLib>
16 {
17 public:
18         CControl()
19         {
20                 m_x = 0;
21                 m_y = 0;
22                 m_h = 0;
23                 m_w = 0;
24                 m_bChecked = false;
25                 m_exstyle = 0;
26                 m_style = 0;
27                 m_nID = 0;
28                 m_hWnd = NULL;
29                 m_hParent = NULL;
30                 ZeroMemory(m_classname, MAX_PATH);
31                 ZeroMemory(m_caption, MAX_PATH);
32                 // \83\8a\83X\83g\83R\83\93\83g\83\8d\81[\83\8b\97p
33                 m_nColumnCount = 0;
34                 m_dLastSortColumn = -1; //\8dÅ\8cã\82É\83\\81[\83g\82µ\82½\83J\83\89\83\80
35         }
36
37         void SetParam(DWORD afterstyle, DWORD exstyle, LPCTSTR classname, LPCTSTR caption, DWORD style, int x, int y, int w, int h, int nID)
38         {
39                 TCHAR tmp[64];
40                 wsprintf(tmp, _T("OnCommand%d"), nID);
41                 m_x = x;
42                 m_y = y;
43                 m_h = h;
44                 m_w = w;
45                 m_exstyle = exstyle;
46                 m_style = style;
47                 StringCchCopy(m_classname, MAX_PATH, classname);
48                 StringCchCopy(m_caption, MAX_PATH, caption);
49                 m_nID = nID;
50                 m_bstrClassEvent = tmp;
51                 m_hWnd = NULL;
52                 m_hParent = NULL;
53                 m_afterstyle = afterstyle;
54         }
55
56         HWND GetHWnd()
57         {
58                 return m_hWnd;
59         }
60
61         void Redraw()
62         {
63                 RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INTERNALPAINT | RDW_INVALIDATE);
64         }
65
66         void SetFont(HFONT hFont)
67         {
68                 if (m_hWnd) {
69                         ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)hFont, true);
70                 }
71         }
72         void SetColor(DWORD color)
73         {
74                 if (m_hWnd) {
75                         if (!lstrcmp(m_classname, WC_TREEVIEW)) {
76                                 TreeView_SetBkColor(m_hWnd, COLORREF(color));
77                         }
78                         else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
79                                 ListView_SetBkColor(m_hWnd, COLORREF(color));
80                         }
81                 }
82         }
83         void FinalRelease()
84         {
85                 ATLTRACE("CControl::FinalRelease\r\n");
86                 Destroy();
87         }
88
89         //DECLARE_REGISTRY_RESOURCEID(IDR_CONTROL)
90
91         DECLARE_PROTECT_FINAL_CONSTRUCT()
92
93         BEGIN_COM_MAP(CControl)
94                 COM_INTERFACE_ENTRY(IControl)
95                 COM_INTERFACE_ENTRY(IDispatch)
96                 COM_INTERFACE_ENTRY(ISupportErrorInfo)
97                 COM_INTERFACE_ENTRY(IConnectionPointContainer)
98         END_COM_MAP()
99         BEGIN_CONNECTION_POINT_MAP(CControl)
100         END_CONNECTION_POINT_MAP()
101
102
103         // IControl
104 public:
105         STDMETHOD(CreateChild)(/*[in]*/VARIANT text,/*[in]*/VARIANT varItem,/*[out,retval]*/VARIANT* pvarUnk);
106         void GetClassEvent(BSTR* pEventName);
107         STDMETHOD(SetClassEvent)(/*[in]*/BSTR name,/*[out,retval]*/VARIANT* pUnk);
108         STDMETHOD(get_ItemText)(/*[in]*/VARIANT idx, /*[out, retval]*/ BSTR *pVal);
109         STDMETHOD(put_ItemText)(/*[in]*/VARIANT idx, /*[in]*/ BSTR newVal);
110         STDMETHOD(DeleteSelectedItem)();
111         STDMETHOD(get_ItemCheckState)(/*[in]*/VARIANT idx, /*[out, retval]*/ BOOL *pVal);
112         STDMETHOD(put_ItemCheckState)(/*[in]*/VARIANT idx, /*[in]*/ BOOL newVal);
113         STDMETHOD(DeleteAllItems)();
114         STDMETHOD(get_ItemObject)(/*[in]*/VARIANT idx, /*[out, retval]*/ VARIANT *pVal);
115         STDMETHOD(get_TreeRoot)(/*[out, retval]*/ VARIANT *pVal);
116         STDMETHOD(get_SelectedCount)(/*[out, retval]*/ short *pVal);
117         STDMETHOD(get_ItemSelectState)(/*[in]*/VARIANT idx, /*[out, retval]*/ VARIANT *pVal);
118         STDMETHOD(put_ItemSelectState)(/*[in]*/VARIANT idx, /*[in]*/ VARIANT newVal);
119         STDMETHOD(get__NewEnum)(/*[out, retval]*/ IUnknown* *pVal);
120         STDMETHOD(get_CurrentSelectedItem)(/*[out, retval]*/ VARIANT *pVal);
121         STDMETHOD(put_CurrentSelectedItem)(/*[in]*/ VARIANT newVal);
122         STDMETHOD(GetCount)(/*[out,retval]*/VARIANT* pRet);
123         STDMETHOD(DeleteString)(/*[in]*/VARIANT idx,/*[out,retval]*/VARIANT* pRet);
124         STDMETHOD(GetColumnText)(/*[in]*/VARIANT idx,/*[in]*/VARIANT col,/*[out,retval]*/VARIANT* pText);
125         STDMETHOD(SetColumnText)(/*[in]*/VARIANT item,/*[in]*/VARIANT col,/*[in]*/VARIANT text);
126         STDMETHOD(AddString)(/*[in]*/VARIANT text,/*[out,retval]*/VARIANT* pRet);
127         STDMETHOD(get_HWND)(/*[out, retval]*/ long *pVal);
128         STDMETHOD(Refresh)();
129         STDMETHOD(get_ClassName)(/*[out, retval]*/ BSTR *pVal);
130         STDMETHOD(get_Exstyle)(/*[out, retval]*/ long *pVal);
131         STDMETHOD(put_Exstyle)(/*[in]*/ long newVal);
132         STDMETHOD(get_Style)(/*[out, retval]*/ long *pVal);
133         STDMETHOD(put_Style)(/*[in]*/ long newVal);
134         STDMETHOD(SetID)(/*[in]*/VARIANT varID,/*[out,retval]*/VARIANT* pvarUnk);
135         STDMETHOD(SetCheck)(/*[out,retval]*/VARIANT* pvarUnk);
136         STDMETHOD(SetPlacement)(/*[in]*/VARIANT x,/*[in]*/VARIANT y,/*[in,optional]*/VARIANT w,/*[in,optional]*/VARIANT h,/*[out,retval]*/VARIANT* pvarUnk);
137         STDMETHOD(get_PosY)(/*[out, retval]*/ short *pVal);
138         STDMETHOD(put_PosY)(/*[in]*/ short newVal);
139         STDMETHOD(get_PosX)(/*[out, retval]*/ short *pVal);
140         STDMETHOD(put_PosX)(/*[in]*/ short newVal);
141         STDMETHOD(get_Height)(/*[out, retval]*/ short *pVal);
142         STDMETHOD(put_Height)(/*[in]*/ short newVal);
143         STDMETHOD(get_Width)(/*[out, retval]*/ short *pVal);
144         STDMETHOD(put_Width)(/*[in]*/ short newVal);
145         STDMETHOD(get_CheckState)(/*[out, retval]*/ short *pVal);
146         STDMETHOD(put_CheckState)(/*[in]*/ short newVal);
147         STDMETHOD(get_Enable)(/*[out, retval]*/ BOOL *pVal);
148         STDMETHOD(put_Enable)(/*[in]*/ BOOL newVal);
149         STDMETHOD(get_Visibility)(/*[out, retval]*/ BOOL *pVal);
150         STDMETHOD(put_Visibility)(/*[in]*/ BOOL newVal);
151         STDMETHOD(get_ID)(/*[out, retval]*/ short *pVal);
152         STDMETHOD(put_ID)(/*[in]*/ short newVal);
153         STDMETHOD(get_Text)(/*[out, retval]*/ BSTR *pVal);
154         STDMETHOD(put_Text)(/*[in]*/ BSTR newVal);
155         void OnRClick();
156         void ListSort(int column);
157         BOOL Create(HWND hParam);
158         int GetID();
159         void GetThisInterface(VARIANT* pvarUnk);
160         void Destroy();
161
162 protected:
163         //      LRESULT (CALLBACK *subclassproc)(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
164         //      static LRESULT CALLBACK WinProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam);
165         static int CALLBACK CompareFunc(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort);
166
167 protected:
168         int m_x;
169         int m_y;
170         int m_h;
171         int m_w;
172         int m_nID;
173         BOOL m_bChecked;
174         DWORD m_exstyle;
175         DWORD m_style;
176         DWORD m_afterstyle;
177         TCHAR m_caption[MAX_PATH];
178         TCHAR m_classname[MAX_PATH];
179         _bstr_t m_bstrClassEvent;
180         HWND m_hParent;
181         HWND m_hWnd;
182         BOOL m_bSortReverse;
183         VARTYPE m_typCompare;
184         int m_dLastSortColumn;
185         int m_nColumnCount;
186         HRESULT ConvertVariantToString(VARIANT text, ATL::CString &retval);
187 };