1 // Control.h : CControl
\82Ì
\90é
\8c¾
5 #include "resource.h" //
\83\81\83C
\83\93 \83V
\83\93\83{
\83\8b
8 /////////////////////////////////////////////////////////////////////////////
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>
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
34 m_dLastSortColumn = -1; //
\8dÅ
\8cã
\82É
\83\
\81[
\83g
\82µ
\82½
\83J
\83\89\83\80
37 void SetParam(DWORD afterstyle, DWORD exstyle, LPCTSTR classname, LPCTSTR caption, DWORD style, int x, int y, int w, int h, int nID)
40 wsprintf(tmp, _T("OnCommand%d"), nID);
47 StringCchCopy(m_classname, MAX_PATH, classname);
48 StringCchCopy(m_caption, MAX_PATH, caption);
50 m_bstrClassEvent = tmp;
53 m_afterstyle = afterstyle;
63 RedrawWindow(m_hWnd, NULL, NULL, RDW_ERASE | RDW_FRAME | RDW_INTERNALPAINT | RDW_INVALIDATE);
66 void SetFont(HFONT hFont)
69 ::SendMessage(m_hWnd, WM_SETFONT, (WPARAM)hFont, true);
72 void SetColor(DWORD color)
75 if (!lstrcmp(m_classname, WC_TREEVIEW)) {
76 TreeView_SetBkColor(m_hWnd, COLORREF(color));
78 else if (!lstrcmp(m_classname, WC_LISTVIEW)) {
79 ListView_SetBkColor(m_hWnd, COLORREF(color));
85 ATLTRACE("CControl::FinalRelease\r\n");
89 //DECLARE_REGISTRY_RESOURCEID(IDR_CONTROL)
91 DECLARE_PROTECT_FINAL_CONSTRUCT()
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)
99 BEGIN_CONNECTION_POINT_MAP(CControl)
100 END_CONNECTION_POINT_MAP()
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);
156 void ListSort(int column);
157 BOOL Create(HWND hParam);
159 void GetThisInterface(VARIANT* pvarUnk);
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);
177 TCHAR m_caption[MAX_PATH];
178 TCHAR m_classname[MAX_PATH];
179 _bstr_t m_bstrClassEvent;
183 VARTYPE m_typCompare;
184 int m_dLastSortColumn;
186 HRESULT ConvertVariantToString(VARIANT text, ATL::CString &retval);