OSDN Git Service

20021009版ソース
[seraphyscrtools/SeraphyScriptTools.git] / Control.h
1 // Control.h : CControl \82Ì\90é\8c¾
2
3 #ifndef __CONTROL_H_
4 #define __CONTROL_H_
5
6 #include "resource.h"       // \83\81\83C\83\93 \83V\83\93\83{\83\8b
7 #include "treeitem.h"
8
9 /////////////////////////////////////////////////////////////////////////////
10 // CControl
11 class ATL_NO_VTABLE CControl : 
12         public CComObjectRootEx<CComSingleThreadModel>,
13 //      public CComCoClass<CControl, &CLSID_Control>,
14         public ISupportErrorInfo,
15         public IConnectionPointContainerImpl<CControl>,
16         public IDispatchImpl<IControl, &IID_IControl, &LIBID_SERAPHYSCRIPTTOOLSLib>
17 {
18 public:
19         CControl()
20         {
21                 m_x = 0;
22                 m_y = 0;
23                 m_h = 0;
24                 m_w = 0;
25                 m_bChecked  = false;
26                 m_exstyle   = 0;
27                 m_style     = 0;
28                 m_nID       = 0;
29                 m_hWnd      = NULL;
30                 m_hParent   = NULL;
31                 ZeroMemory(m_classname,MAX_PATH);
32                 ZeroMemory(m_caption  ,MAX_PATH);
33                 // \83\8a\83X\83g\83R\83\93\83g\83\8d\81[\83\8b\97p
34                 m_nColumnCount = 0;
35                 m_dLastSortColumn = -1; //\8dÅ\8cã\82É\83\\81[\83g\82µ\82½\83J\83\89\83\80
36         }
37         void SetParam(DWORD afterstyle,DWORD exstyle,LPCSTR classname,LPCSTR caption,DWORD style,int x,int y,int w,int h,int nID)
38         {
39                 CHAR tmp[64];
40                 wsprintf(tmp,"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                 lstrcpy(m_classname,classname);
48                 lstrcpy(m_caption,caption);
49                 m_nID       = nID;
50                 m_bstrClassEvent = tmp;
51                 m_hWnd = NULL;
52                 m_hParent = NULL;
53                 m_afterstyle = afterstyle;
54         }
55         HWND GetHWnd()
56         {
57                 return m_hWnd;
58         }
59         void Redraw()
60         {
61                 RedrawWindow(m_hWnd,NULL,NULL,RDW_ERASE|RDW_FRAME|RDW_INTERNALPAINT|RDW_INVALIDATE);
62         }
63         void SetFont(HFONT hFont)
64         {
65                 if(m_hWnd){
66                         ::SendMessage(m_hWnd,WM_SETFONT,(WPARAM)hFont,true);
67                 }
68         }
69         void SetColor(DWORD color)
70         {
71                 if(m_hWnd){
72                         if(!lstrcmp(m_classname,WC_TREEVIEW)){
73                                 TreeView_SetBkColor(m_hWnd,COLORREF(color));
74                         }
75                         else if(!lstrcmp(m_classname,WC_LISTVIEW)){
76                                 ListView_SetBkColor(m_hWnd,COLORREF(color));
77                         }
78                 }
79         }
80         void FinalRelease()
81         {
82                 ATLTRACE("CControl::FinalRelease\r\n");
83                 Destroy();
84         }
85
86 //DECLARE_REGISTRY_RESOURCEID(IDR_CONTROL)
87
88 DECLARE_PROTECT_FINAL_CONSTRUCT()
89
90 BEGIN_COM_MAP(CControl)
91         COM_INTERFACE_ENTRY(IControl)
92         COM_INTERFACE_ENTRY(IDispatch)
93         COM_INTERFACE_ENTRY(ISupportErrorInfo)
94         COM_INTERFACE_ENTRY(IConnectionPointContainer)
95 END_COM_MAP()
96 BEGIN_CONNECTION_POINT_MAP(CControl)
97 END_CONNECTION_POINT_MAP()
98
99
100 // ISupportsErrorInfo
101         STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
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         LPSTR ConvertVariantToString(VARIANT text);
187 };
188
189 #endif //__CONTROL_H_