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