2 // CommDialog.h : Declaration of the CCommDialog
4 #ifndef __COMMDIALOG_H_
5 #define __COMMDIALOG_H_
7 #include "resource.h" //
\83\81\83C
\83\93 \83V
\83\93\83{
\83\8b
9 #include "SeraphyScriptToolsCP.h"
11 /////////////////////////////////////////////////////////////////////////////
13 class ATL_NO_VTABLE CCommDialog :
14 public CComObjectRootEx<CComSingleThreadModel>,
15 public CStockPropImpl<CCommDialog, ICommDialog, &IID_ICommDialog, &LIBID_SERAPHYSCRIPTTOOLSLib>,
16 public CComControl<CCommDialog>,
17 public IPersistStreamInitImpl<CCommDialog>,
18 public IOleControlImpl<CCommDialog>,
19 public IOleObjectImpl<CCommDialog>,
20 public IOleInPlaceActiveObjectImpl<CCommDialog>,
21 public IViewObjectExImpl<CCommDialog>,
22 public IOleInPlaceObjectWindowlessImpl<CCommDialog>,
23 public ISupportErrorInfo,
24 public IConnectionPointContainerImpl<CCommDialog>,
25 public IPersistStorageImpl<CCommDialog>,
26 public ISpecifyPropertyPagesImpl<CCommDialog>,
27 public IQuickActivateImpl<CCommDialog>,
28 public IDataObjectImpl<CCommDialog>,
29 public IProvideClassInfo2Impl<&CLSID_CommDialog, &DIID__ICommDialogEvents, &LIBID_SERAPHYSCRIPTTOOLSLib>,
30 public IPropertyNotifySinkCP<CCommDialog>,
31 public CComCoClass<CCommDialog, &CLSID_CommDialog>
36 m_pUnkMarshaler = NULL;
37 //
\83J
\83\89\81[
\8d\
\91¢
\91Ì
40 m_colors[i] = COLORREF(0xC0C0C0);
42 ZeroMemory(&m_color,sizeof(CHOOSECOLOR));
43 m_color.lStructSize = sizeof(CHOOSECOLOR);
44 m_color.lpCustColors = m_colors;
45 m_color.Flags = CC_FULLOPEN | CC_SOLIDCOLOR;
47 m_bEnableCreatePrompt = false;
48 m_bEnableReadonly = false;
50 m_bNoDereferenceLinks = false;
51 m_hStaticMainWindow = NULL; //
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\82æ
\82è
\97D
\90æ
\82µ
\82Ä
\8eg
\97p
\82³
\82ê
\82é
52 //
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\82Ì
\8f\89\8aú
\89»
56 DECLARE_GET_CONTROLLING_UNKNOWN()
57 DECLARE_REGISTRY_RESOURCEID(IDR_COMMDIALOG)
59 DECLARE_PROTECT_FINAL_CONSTRUCT()
61 BEGIN_COM_MAP(CCommDialog)
62 COM_INTERFACE_ENTRY(ICommDialog)
63 COM_INTERFACE_ENTRY(IDispatch)
64 COM_INTERFACE_ENTRY(IViewObjectEx)
65 COM_INTERFACE_ENTRY(IViewObject2)
66 COM_INTERFACE_ENTRY(IViewObject)
67 COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
68 COM_INTERFACE_ENTRY(IOleInPlaceObject)
69 COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
70 COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
71 COM_INTERFACE_ENTRY(IOleControl)
72 COM_INTERFACE_ENTRY(IOleObject)
73 COM_INTERFACE_ENTRY(IPersistStreamInit)
74 COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
75 COM_INTERFACE_ENTRY(ISupportErrorInfo)
76 COM_INTERFACE_ENTRY(IConnectionPointContainer)
77 COM_INTERFACE_ENTRY(ISpecifyPropertyPages)
78 COM_INTERFACE_ENTRY(IQuickActivate)
79 COM_INTERFACE_ENTRY(IPersistStorage)
80 COM_INTERFACE_ENTRY(IDataObject)
81 COM_INTERFACE_ENTRY(IProvideClassInfo)
82 COM_INTERFACE_ENTRY(IProvideClassInfo2)
83 COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p)
84 COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
87 BEGIN_PROP_MAP(CCommDialog)
88 PROP_DATA_ENTRY("_cx", m_sizeExtent.cx, VT_UI4)
89 PROP_DATA_ENTRY("_cy", m_sizeExtent.cy, VT_UI4)
90 PROP_ENTRY("Caption", DISPID_CAPTION, CLSID_NULL)
92 // PROP_ENTRY("Property Description", dispid, clsid)
93 // PROP_PAGE(CLSID_StockColorPage)
96 BEGIN_CONNECTION_POINT_MAP(CCommDialog)
97 CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
98 END_CONNECTION_POINT_MAP()
100 BEGIN_MSG_MAP(CCommDialog)
101 CHAIN_MSG_MAP(CComControl<CCommDialog>)
102 DEFAULT_REFLECTION_HANDLER()
104 // Handler prototypes:
105 // LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
106 // LRESULT CommandHandler(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
107 // LRESULT NotifyHandler(int idCtrl, LPNMHDR pnmh, BOOL& bHandled);
111 HRESULT FinalConstruct()
113 return CoCreateFreeThreadedMarshaler(
114 GetControllingUnknown(), &m_pUnkMarshaler.p);
119 ATLTRACE("CommonDialog::FinalRelease\r\n");
120 //
\83\81\83C
\83\93\83E
\83B
\83\93\83h
\83E
\83C
\83\93\83^
\81[
\83t
\83F
\83C
\83X
\82Ì
\89ð
\95ú
122 m_pMainWindow->Release();
123 m_pMainWindow = NULL;
125 m_pUnkMarshaler.Release();
128 CComPtr<IUnknown> m_pUnkMarshaler;
130 // ISupportsErrorInfo
131 STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid)
133 static const IID* arr[] =
137 for (int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
139 if (IsEqualGUID(*arr[i], riid))
146 DECLARE_VIEW_STATUS(VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE)
148 static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData );
149 _bstr_t m_bstr_BrowseForFolderCaption;
150 STDMETHOD(get_BrowseForFolderCaption)(/*[out, retval]*/ BSTR *pVal);
151 STDMETHOD(put_BrowseForFolderCaption)(/*[in]*/ BSTR newVal);
152 STDMETHOD(BrowseForFolder)(/*[in,optional]*/VARIANT caption,/*[in,optional]*/VARIANT varDir,/*[in,optinal]*/VARIANT varMode,/*[out,retval]*/VARIANT* pvarReturn);
153 STDMETHOD(get_HWND)(/*[out, retval]*/ long *pVal);
154 STDMETHOD(put_HWND)(/*[in]*/ long newVal);
155 STDMETHOD(get_InitialDir)(/*[out, retval]*/ BSTR *pVal);
156 STDMETHOD(put_InitialDir)(/*[in]*/ BSTR newVal);
157 BOOL m_bNoDereferenceLinks;
158 STDMETHOD(get_NoDereferenceLinks)(/*[out, retval]*/ BOOL *pVal);
159 STDMETHOD(put_NoDereferenceLinks)(/*[in]*/ BOOL newVal);
160 STDMETHOD(get_ReadOnly)(/*[out, retval]*/ BOOL *pVal);
161 STDMETHOD(put_ReadOnly)(/*[in]*/ BOOL newVal);
162 STDMETHOD(get_EnableReadOnly)(/*[out, retval]*/ BOOL *pVal);
163 STDMETHOD(put_EnableReadOnly)(/*[in]*/ BOOL newVal);
165 BOOL m_bEnableReadonly;
166 BOOL m_bEnableCreatePrompt;
167 STDMETHOD(get_EnableCreatePrompt)(/*[out, retval]*/ BOOL *pVal);
168 STDMETHOD(put_EnableCreatePrompt)(/*[in]*/ BOOL newVal);
169 _bstr_t m_bstr_InitialDir;
170 _bstr_t m_bstr_SaveFileCaption;
171 _bstr_t m_bstr_OpenFileCaption;
172 STDMETHOD(get_SaveFileCaption)(/*[out, retval]*/ BSTR *pVal);
173 STDMETHOD(put_SaveFileCaption)(/*[in]*/ BSTR newVal);
174 STDMETHOD(get_OpenFileCaption)(/*[out, retval]*/ BSTR *pVal);
175 STDMETHOD(put_OpenFileCaption)(/*[in]*/ BSTR newVal);
176 STDMETHOD(SaveFileDialog)(/*[in,optional]*/VARIANT varPathName,/*[in,optional]*/VARIANT varFilter,/*[out,retval]*/VARIANT* pvarReturn);
177 STDMETHOD(OpenFileDialog)(/*[in,optional]*/VARIANT varPathName,/*[in,optional]*/VARIANT varFilter,/*[out,retval]*/VARIANT* pvarReturn);
178 STDMETHOD(MultiOpenFileDialog)(/*[in,optional]*/VARIANT varMulti,/*[in,optional]*/VARIANT varFilter,/*[out,retval]*/VARIANT* pvarResult);
179 void CommFileDialog(VARIANT* pvarResult,VARIANT varPathName,VARIANT varFilter,BOOL bMode,DWORD flags);
183 HRESULT OnDraw(ATL_DRAWINFO& di)
185 RECT& rc = *(RECT*)di.prcBounds;
186 Rectangle(di.hdcDraw, rc.left, rc.top, rc.right, rc.bottom);
188 SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
189 LPCTSTR pszText = _T("ATL 3.0 : CommDialog");
191 (rc.left + rc.right) / 2,
192 (rc.top + rc.bottom) / 2,
198 CComBSTR m_bstrCaption;
200 STDMETHOD(ColorDialog)(/*[out,retval]*/VARIANT* pcolorVal);
201 STDMETHOD(get_MessageCaption)(/*[out, retval]*/ BSTR *pVal);
202 STDMETHOD(put_MessageCaption)(/*[in]*/ BSTR newVal);
203 LPCSTR GetMainCaption();
204 STDMETHOD(MessageBox)(/*[in]*/VARIANT mes,/*[in,optional]*/VARIANT typ,/*[in,optional]*/VARIANT icon,/*[out,retval]*/VARIANT* pRet);
205 STDMETHOD(SetMainWindow)(/*[in]*/VARIANT varUnk);
206 HWND GetMainWindow();
207 HWND m_hStaticMainWindow;
210 COLORREF m_colors[16];
211 IOverlappedWindow* m_pMainWindow;
212 _bstr_t m_bstr_MessageCaption;
215 #endif //__COMMDIALOG_H_