Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

477 lines
19 KiB

  1. // DHTMLEdit.h : Declaration of the CDHTMLEdit
  2. // Copyright (c)1997-1999 Microsoft Corporation, All Rights Reserved
  3. #ifndef __DHTMLEDIT_H_
  4. #define __DHTMLEDIT_H_
  5. #include "resource.h" // main symbols
  6. #include "CPDHTMLEd.h"
  7. #include "triedtctlid.h"
  8. #include "private.h"
  9. #include "wininet.h"
  10. #include "trixacc.h"
  11. class CProxyFrame;
  12. class CEventXferSink;
  13. typedef /* [helpstring][uuid] */
  14. enum TriEditFilterConstants
  15. { filterNone = 0x1,
  16. filterDTCs = 0x2,
  17. filterASP = 0x8,
  18. preserveSourceCode = 0x10,
  19. filterSourceCode = 0x20,
  20. filterAll = filterDTCs | filterASP | preserveSourceCode
  21. } TriEditCtlFilterConstants;
  22. #define DOCUMENT_COMPETE_MESSAGE (WM_USER+18)
  23. #define DOCUMENT_COMPETE_SIGNATURE 0xADFE
  24. // ATL 3.0 macro for overriding the window class settings.
  25. #ifndef DECLARE_WND_CLASS_EX
  26. #define DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd) \
  27. static CWndClassInfo& GetWndClassInfo() \
  28. { \
  29. static CWndClassInfo wc = \
  30. { \
  31. { sizeof(WNDCLASSEX), style, StartWindowProc, \
  32. 0, 0, NULL, NULL, NULL, (HBRUSH)(bkgnd + 1), NULL, WndClassName, NULL }, \
  33. NULL, NULL, IDC_ARROW, TRUE, 0, _T("") \
  34. }; \
  35. return wc; \
  36. }
  37. #endif
  38. /////////////////////////////////////////////////////////////////////////////
  39. // CDHTMLSafe
  40. // This is the Safe for Scripting control, which is complete and stand-alone,
  41. // but aggregated by DHTMLEdit to provide Load and Save capabilities.
  42. //
  43. class ATL_NO_VTABLE CDHTMLSafe :
  44. public CComObjectRootEx<CComSingleThreadModel>,
  45. public CComCoClass<CDHTMLSafe, &CLSID_DHTMLSafe>,
  46. public CComControl<CDHTMLSafe>,
  47. public IDispatchImpl<IDHTMLSafe, &IID_IDHTMLSafe, &LIBID_DHTMLEDLib>,
  48. public IProvideClassInfo2Impl<&CLSID_DHTMLSafe, &DIID__DHTMLSafeEvents, &LIBID_DHTMLEDLib>,
  49. public IPersistStreamInitImpl<CDHTMLSafe>,
  50. public IPersistStorageImpl<CDHTMLSafe>,
  51. public IPersistPropertyBagImpl<CDHTMLSafe>,
  52. public IOleControlImpl<CDHTMLSafe>,
  53. public IOleObjectImpl<CDHTMLSafe>,
  54. public IOleInPlaceActiveObjectImpl<CDHTMLSafe>,
  55. public IViewObjectExImpl<CDHTMLSafe>,
  56. public IOleInPlaceObjectWindowlessImpl<CDHTMLSafe>,
  57. public IDataObjectImpl<CDHTMLSafe>,
  58. public ISpecifyPropertyPagesImpl<CDHTMLSafe>,
  59. public CProxy_DHTMLSafeEvents<CDHTMLSafe>,
  60. public IPropertyNotifySinkCP<CDHTMLSafe>,
  61. public IConnectionPointContainerImpl<CDHTMLSafe>,
  62. public IInterconnector
  63. {
  64. public:
  65. DECLARE_WND_CLASS_EX(NULL, CS_DBLCLKS, (HBRUSH)(COLOR_WINDOW+1))
  66. CDHTMLSafe();
  67. ~CDHTMLSafe();
  68. BOOL IsUserMode() {
  69. HRESULT hr = S_OK;
  70. BOOL bVal = FALSE;
  71. if (FAILED(hr = GetAmbientUserMode(bVal)))
  72. bVal = TRUE;
  73. return (bVal) ? TRUE : FALSE;
  74. };
  75. DECLARE_REGISTRY_RESOURCEID(IDR_DHTMLSafe)
  76. DECLARE_AGGREGATABLE(CDHTMLSafe)
  77. BEGIN_COM_MAP(CDHTMLSafe)
  78. COM_INTERFACE_ENTRY(IDispatch)
  79. COM_INTERFACE_ENTRY(IDHTMLSafe)
  80. COM_INTERFACE_ENTRY_IMPL(IViewObjectEx)
  81. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject2, IViewObjectEx)
  82. COM_INTERFACE_ENTRY_IMPL_IID(IID_IViewObject, IViewObjectEx)
  83. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleInPlaceObject, IOleInPlaceObjectWindowless)
  84. COM_INTERFACE_ENTRY_IMPL_IID(IID_IOleWindow, IOleInPlaceObjectWindowless)
  85. COM_INTERFACE_ENTRY_IMPL(IOleInPlaceActiveObject)
  86. COM_INTERFACE_ENTRY_IMPL(IOleControl)
  87. COM_INTERFACE_ENTRY_IMPL(IOleObject)
  88. COM_INTERFACE_ENTRY_IMPL(IPersistStorage)
  89. COM_INTERFACE_ENTRY_IMPL(IPersistStreamInit)
  90. COM_INTERFACE_ENTRY_IMPL(IPersistPropertyBag)
  91. COM_INTERFACE_ENTRY_IMPL(ISpecifyPropertyPages)
  92. COM_INTERFACE_ENTRY_IMPL(IDataObject)
  93. COM_INTERFACE_ENTRY(IProvideClassInfo)
  94. COM_INTERFACE_ENTRY(IProvideClassInfo2)
  95. COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  96. COM_INTERFACE_ENTRY(IInterconnector)
  97. END_COM_MAP()
  98. BEGIN_PROPERTY_MAP(CDHTMLSafe)
  99. // Example entries
  100. // PROP_ENTRY("Property Description", dispid, clsid)
  101. PROP_ENTRY("ActivateApplets", DISPID_ACTIVATEAPPLETS, CLSID_NULL)
  102. PROP_ENTRY("ActivateActiveXControls", DISPID_ACTIVATEACTIVEXCONTROLS, CLSID_NULL)
  103. PROP_ENTRY("ActivateDTCs", DISPID_ACTIVATEDTCS, CLSID_NULL)
  104. PROP_ENTRY("ShowDetails", DISPID_SHOWDETAILS, CLSID_NULL)
  105. PROP_ENTRY("ShowBorders", DISPID_SHOWBORDERS, CLSID_NULL)
  106. PROP_ENTRY("Appearance", DISPID_DHTMLEDITAPPEARANCE, CLSID_NULL)
  107. PROP_ENTRY("Scrollbars", DISPID_DHTMLEDITSCROLLBARS, CLSID_NULL)
  108. PROP_ENTRY("ScrollbarAppearance", DISPID_SCROLLBARAPPEARANCE, CLSID_NULL)
  109. PROP_ENTRY("SourceCodePreservation", DISPID_SOURCECODEPRESERVATION, CLSID_NULL)
  110. PROP_ENTRY("AbsoluteDropMode", DISPID_ABSOLUTEDROPMODE, CLSID_NULL)
  111. PROP_ENTRY("SnapToGrid", DISPID_SNAPTOGRID, CLSID_NULL)
  112. PROP_ENTRY("SnapToGridX", DISPID_SNAPTOGRIDX, CLSID_NULL)
  113. PROP_ENTRY("SnapToGridY", DISPID_SNAPTOGRIDY, CLSID_NULL)
  114. PROP_ENTRY("UseDivOnCarriageReturn", DISPID_USEDIVONCR, CLSID_NULL)
  115. END_PROPERTY_MAP()
  116. BEGIN_CONNECTION_POINT_MAP(CDHTMLSafe)
  117. CONNECTION_POINT_ENTRY(DIID__DHTMLSafeEvents)
  118. CONNECTION_POINT_ENTRY(IID_IPropertyNotifySink)
  119. END_CONNECTION_POINT_MAP()
  120. BEGIN_MSG_MAP(CDHTMLSafe)
  121. MESSAGE_HANDLER(WM_PAINT, OnPaint)
  122. MESSAGE_HANDLER(WM_SIZE, OnSize)
  123. MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
  124. MESSAGE_HANDLER(WM_SHOWWINDOW, OnShow)
  125. MESSAGE_HANDLER(WM_CREATE, OnCreate)
  126. MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
  127. MESSAGE_HANDLER(DOCUMENT_COMPETE_MESSAGE, OnDocumentComplete)
  128. END_MSG_MAP()
  129. // IViewObjectEx
  130. STDMETHOD(GetViewStatus)(DWORD* pdwStatus)
  131. {
  132. ATLTRACE(_T("IViewObjectExImpl::GetViewStatus\n"));
  133. *pdwStatus = VIEWSTATUS_SOLIDBKGND | VIEWSTATUS_OPAQUE;
  134. return S_OK;
  135. }
  136. // IDHTMLSafe
  137. public:
  138. STDMETHOD(get_IsDirty)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  139. STDMETHOD(get_SourceCodePreservation)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  140. STDMETHOD(put_SourceCodePreservation)(/*[in]*/ VARIANT_BOOL newVal);
  141. STDMETHOD(get_ScrollbarAppearance)(/*[out, retval]*/ DHTMLEDITAPPEARANCE *pVal);
  142. STDMETHOD(put_ScrollbarAppearance)(/*[in]*/ DHTMLEDITAPPEARANCE newVal);
  143. STDMETHOD(get_Scrollbars)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  144. STDMETHOD(put_Scrollbars)(/*[in]*/ VARIANT_BOOL newVal);
  145. STDMETHOD(get_Appearance)(/*[out, retval]*/ DHTMLEDITAPPEARANCE *pVal);
  146. STDMETHOD(put_Appearance)(/*[in]*/ DHTMLEDITAPPEARANCE newVal);
  147. STDMETHOD(get_ShowBorders)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  148. STDMETHOD(put_ShowBorders)(/*[in]*/ VARIANT_BOOL newVal);
  149. STDMETHOD(get_ShowDetails)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  150. STDMETHOD(put_ShowDetails)(/*[in]*/ VARIANT_BOOL newVal);
  151. STDMETHOD(get_ActivateDTCs)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  152. STDMETHOD(put_ActivateDTCs)(/*[in]*/ VARIANT_BOOL newVal);
  153. STDMETHOD(get_ActivateActiveXControls)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  154. STDMETHOD(put_ActivateActiveXControls)(/*[in]*/ VARIANT_BOOL newVal);
  155. STDMETHOD(get_ActivateApplets)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  156. STDMETHOD(put_ActivateApplets)(/*[in]*/ VARIANT_BOOL newVal);
  157. STDMETHOD(get_DOM)(/*[out, retval]*/ IHTMLDocument2 **pVal);
  158. STDMETHOD(get_DocumentHTML)(/*[out, retval]*/ BSTR *pVal);
  159. STDMETHOD(put_DocumentHTML)(/*[in]*/ BSTR newVal);
  160. STDMETHOD(get_AbsoluteDropMode)(/* [retval][out] */ VARIANT_BOOL *pVal);
  161. STDMETHOD(put_AbsoluteDropMode)(/* [in] */ VARIANT_BOOL newVal);
  162. STDMETHOD(get_SnapToGridX)(/* [retval][out] */ LONG *pVal);
  163. STDMETHOD(put_SnapToGridX)(/* [in] */ LONG newVal);
  164. STDMETHOD(get_SnapToGridY)(/* [retval][out] */ LONG *pVal);
  165. STDMETHOD(put_SnapToGridY)(/* [in] */ LONG newVal);
  166. STDMETHOD(get_SnapToGrid)(/* [retval][out] */ VARIANT_BOOL *pVal);
  167. STDMETHOD(put_SnapToGrid)(/* [in] */ VARIANT_BOOL newVal);
  168. STDMETHOD(get_CurrentDocumentPath)(/* [retval][out] */ BSTR *pVal);
  169. STDMETHOD(get_BaseURL)(/* [retval][out] */ BSTR *baseURL);
  170. STDMETHOD(put_BaseURL)(/* [in] */ BSTR baseURL);
  171. STDMETHOD(get_DocumentTitle)(/* [retval][out] */ BSTR *docTitle);
  172. STDMETHOD(get_UseDivOnCarriageReturn)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  173. STDMETHOD(put_UseDivOnCarriageReturn)(/*[in]*/ VARIANT_BOOL newVal);
  174. STDMETHOD(get_Busy)(/* [retval][out] */ VARIANT_BOOL *pVal);
  175. STDMETHOD(ExecCommand)(DHTMLEDITCMDID cmdID, OLECMDEXECOPT cmdexecopt, LPVARIANT pInVar, LPVARIANT pOutVar);
  176. STDMETHOD(QueryStatus)(DHTMLEDITCMDID cmdID, /*[out, retval]*/ DHTMLEDITCMDF* retval);
  177. STDMETHOD(SetContextMenu)(/*[in]*/ LPVARIANT menuStrings, /*[in]*/ LPVARIANT menuStates);
  178. STDMETHOD(NewDocument)(void);
  179. STDMETHOD(LoadURL)(BSTR url);
  180. STDMETHOD(FilterSourceCode)(/*[in]*/ BSTR sourceCodeIn, /*[out, retval]*/ BSTR* sourceCodeOut);
  181. STDMETHOD(Refresh)(void);
  182. HRESULT OnDraw(ATL_DRAWINFO& di);
  183. LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  184. LRESULT OnDestroy(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  185. LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  186. LRESULT OnShow(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  187. LRESULT OnSetFocus(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  188. LRESULT OnDocumentComplete(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& lResult);
  189. STDMETHOD(TranslateAccelerator)(LPMSG lpmsg);
  190. STDMETHOD(OnAmbientPropertyChange)(DISPID dispID);
  191. STDMETHOD(OnMnemonic)(LPMSG pMsg);
  192. HRESULT IOleInPlaceObject_UIDeactivate ( void );
  193. // IOleObject
  194. STDMETHOD(SetClientSite)(IOleClientSite *pClientSite);
  195. // IOleObjectImpl
  196. HRESULT IOleObject_SetExtent (DWORD dwDrawAspect, SIZEL *psizel);
  197. // IPersist overrides
  198. STDMETHOD(GetClassID)(CLSID *pClassID);
  199. // IPersistStreamInit override
  200. HRESULT IPersistStreamInit_Load(LPSTREAM pStm, ATL_PROPMAP_ENTRY* pMap);
  201. HRESULT IPersistStreamInit_Save(LPSTREAM pStm, BOOL fClearDirty, ATL_PROPMAP_ENTRY* pMap);
  202. BOOL IsPropertyBagLoading ( void ) { return m_bfPropertyBagLoading; }
  203. // IPersistPropertyBag override
  204. HRESULT IPersistPropertyBag_Load(LPPROPERTYBAG pPropBag, LPERRORLOG pErrorLog, ATL_PROPMAP_ENTRY* pMap);
  205. HRESULT IPersistPropertyBag_Save(LPPROPERTYBAG pPropBag, BOOL fClearDirty, BOOL fSaveAllProperties, ATL_PROPMAP_ENTRY* pMap);
  206. // IInterconnector
  207. STDMETHOD(GetInterconnector)( SIZE_T* vp ) { *vp = (SIZE_T)m_pFrame; return S_OK; }
  208. STDMETHOD(GetCtlWnd)( SIZE_T* vw ) { *vw = (SIZE_T)m_hWndCD; return S_OK; }
  209. STDMETHOD(MakeDirty)( DISPID dispid ) { SetDirty ( TRUE ); FireOnChanged ( dispid ); return S_OK; }
  210. DECLARE_GET_CONTROLLING_UNKNOWN();
  211. // ATL helper functions override
  212. DECLARE_PROTECT_FINAL_CONSTRUCT();
  213. HRESULT FinalConstruct();
  214. void FinalRelease();
  215. void FocusSite ( BOOL bfGetFocus );
  216. IOleControlSite* GetControlSite ( void ) { return m_piControlSite; }
  217. HRESULT ControlQueryInterface(const IID& iid, void** ppv);
  218. BOOL IsSafeForScripting ( void ) { return ( NULL == GetOuterEditControl () ); }
  219. protected:
  220. HRESULT SpecialEdit ( DHTMLEDITCMDID cmdID, OLECMDEXECOPT cmdexecopt );
  221. private:
  222. ATL_PROPMAP_ENTRY* ProperPropMap ( void );
  223. IDHTMLEdit* GetOuterEditControl ( void );
  224. protected:
  225. class CProxyFrame* m_pFrame;
  226. IOleControlSite* m_piControlSite;
  227. BOOL m_fJustCreated;
  228. IDHTMLEdit* m_piOuterEditCtl;
  229. BOOL m_bfPropertyBagLoading;
  230. BOOL m_bfOuterEditUnknownTested;
  231. };
  232. /////////////////////////////////////////////////////////////////////////////
  233. // CDHTMLEdit
  234. //
  235. class ATL_NO_VTABLE CDHTMLEdit :
  236. public CComObjectRootEx<CComSingleThreadModel>,
  237. public CComCoClass<CDHTMLEdit, &CLSID_DHTMLEdit>,
  238. public IDispatchImpl<IDHTMLEdit, &IID_IDHTMLEdit, &LIBID_DHTMLEDLib>,
  239. public CProxy_DHTMLEditEvents<CDHTMLEdit>,
  240. public IProvideClassInfo2Impl<&CLSID_DHTMLEdit, &DIID__DHTMLEditEvents, &LIBID_DHTMLEDLib>,
  241. public IConnectionPointContainerImpl<CDHTMLEdit>,
  242. public IOleObject,
  243. public IServiceProvider,
  244. public IInternetSecurityManager
  245. {
  246. public:
  247. CDHTMLEdit();
  248. ~CDHTMLEdit();
  249. DECLARE_REGISTRY_RESOURCEID(IDR_DHTMLEDIT)
  250. DECLARE_AGGREGATABLE(CDHTMLEdit)
  251. BEGIN_COM_MAP(CDHTMLEdit)
  252. COM_INTERFACE_ENTRY(IDispatch)
  253. COM_INTERFACE_ENTRY(IDHTMLEdit)
  254. COM_INTERFACE_ENTRY(IOleObject)
  255. COM_INTERFACE_ENTRY(IProvideClassInfo)
  256. COM_INTERFACE_ENTRY(IProvideClassInfo2)
  257. COM_INTERFACE_ENTRY(IServiceProvider)
  258. COM_INTERFACE_ENTRY(IInternetSecurityManager)
  259. COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  260. COM_INTERFACE_ENTRY_AGGREGATE_BLIND(m_punkInnerCtl)
  261. END_COM_MAP()
  262. BEGIN_PROPERTY_MAP(CDHTMLEdit)
  263. PROP_ENTRY("ActivateApplets", DISPID_ACTIVATEAPPLETS, CLSID_NULL)
  264. PROP_ENTRY("ActivateActiveXControls", DISPID_ACTIVATEACTIVEXCONTROLS, CLSID_NULL)
  265. PROP_ENTRY("ActivateDTCs", DISPID_ACTIVATEDTCS, CLSID_NULL)
  266. PROP_ENTRY("ShowDetails", DISPID_SHOWDETAILS, CLSID_NULL)
  267. PROP_ENTRY("ShowBorders", DISPID_SHOWBORDERS, CLSID_NULL)
  268. PROP_ENTRY("Appearance", DISPID_DHTMLEDITAPPEARANCE, CLSID_NULL)
  269. PROP_ENTRY("Scrollbars", DISPID_DHTMLEDITSCROLLBARS, CLSID_NULL)
  270. PROP_ENTRY("ScrollbarAppearance", DISPID_SCROLLBARAPPEARANCE, CLSID_NULL)
  271. PROP_ENTRY("SourceCodePreservation", DISPID_SOURCECODEPRESERVATION, CLSID_NULL)
  272. PROP_ENTRY("AbsoluteDropMode", DISPID_ABSOLUTEDROPMODE, CLSID_NULL)
  273. PROP_ENTRY("SnapToGrid", DISPID_SNAPTOGRID, CLSID_NULL)
  274. PROP_ENTRY("SnapToGridX", DISPID_SNAPTOGRIDX, CLSID_NULL)
  275. PROP_ENTRY("SnapToGridY", DISPID_SNAPTOGRIDY, CLSID_NULL)
  276. PROP_ENTRY("BrowseMode", DISPID_BROWSEMODE, CLSID_NULL)
  277. PROP_ENTRY("UseDivOnCarriageReturn", DISPID_USEDIVONCR, CLSID_NULL)
  278. END_PROPERTY_MAP()
  279. BEGIN_CONNECTION_POINT_MAP(CDHTMLEdit)
  280. CONNECTION_POINT_ENTRY(DIID__DHTMLEditEvents)
  281. END_CONNECTION_POINT_MAP()
  282. // IDHTMLEdit
  283. public:
  284. STDMETHOD(get_IsDirty)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  285. STDMETHOD(get_SourceCodePreservation)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  286. STDMETHOD(put_SourceCodePreservation)(/*[in]*/ VARIANT_BOOL newVal);
  287. STDMETHOD(get_ScrollbarAppearance)(/*[out, retval]*/ DHTMLEDITAPPEARANCE *pVal);
  288. STDMETHOD(put_ScrollbarAppearance)(/*[in]*/ DHTMLEDITAPPEARANCE newVal);
  289. STDMETHOD(get_Scrollbars)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  290. STDMETHOD(put_Scrollbars)(/*[in]*/ VARIANT_BOOL newVal);
  291. STDMETHOD(get_Appearance)(/*[out, retval]*/ DHTMLEDITAPPEARANCE *pVal);
  292. STDMETHOD(put_Appearance)(/*[in]*/ DHTMLEDITAPPEARANCE newVal);
  293. STDMETHOD(get_ShowBorders)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  294. STDMETHOD(put_ShowBorders)(/*[in]*/ VARIANT_BOOL newVal);
  295. STDMETHOD(get_ShowDetails)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  296. STDMETHOD(put_ShowDetails)(/*[in]*/ VARIANT_BOOL newVal);
  297. STDMETHOD(get_ActivateDTCs)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  298. STDMETHOD(put_ActivateDTCs)(/*[in]*/ VARIANT_BOOL newVal);
  299. STDMETHOD(get_ActivateActiveXControls)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  300. STDMETHOD(put_ActivateActiveXControls)(/*[in]*/ VARIANT_BOOL newVal);
  301. STDMETHOD(get_ActivateApplets)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  302. STDMETHOD(put_ActivateApplets)(/*[in]*/ VARIANT_BOOL newVal);
  303. STDMETHOD(get_DOM)(/*[out, retval]*/ IHTMLDocument2 **pVal);
  304. STDMETHOD(get_DocumentHTML)(/*[out, retval]*/ BSTR *pVal);
  305. STDMETHOD(put_DocumentHTML)(/*[in]*/ BSTR newVal);
  306. STDMETHOD(get_AbsoluteDropMode)(/* [retval][out] */ VARIANT_BOOL *pVal);
  307. STDMETHOD(put_AbsoluteDropMode)(/* [in] */ VARIANT_BOOL newVal);
  308. STDMETHOD(get_SnapToGridX)(/* [retval][out] */ LONG *pVal);
  309. STDMETHOD(put_SnapToGridX)(/* [in] */ LONG newVal);
  310. STDMETHOD(get_SnapToGridY)(/* [retval][out] */ LONG *pVal);
  311. STDMETHOD(put_SnapToGridY)(/* [in] */ LONG newVal);
  312. STDMETHOD(get_SnapToGrid)(/* [retval][out] */ VARIANT_BOOL *pVal);
  313. STDMETHOD(put_SnapToGrid)(/* [in] */ VARIANT_BOOL newVal);
  314. STDMETHOD(get_CurrentDocumentPath)(/* [retval][out] */ BSTR *pVal);
  315. STDMETHOD(get_BaseURL)(/* [retval][out] */ BSTR *baseURL);
  316. STDMETHOD(put_BaseURL)(/* [in] */ BSTR baseURL);
  317. STDMETHOD(get_DocumentTitle)(/* [retval][out] */ BSTR *docTitle);
  318. STDMETHOD(get_BrowseMode)(/* [retval][out] */ VARIANT_BOOL *pVal);
  319. STDMETHOD(put_BrowseMode)(/* [in] */ VARIANT_BOOL newVal);
  320. STDMETHOD(get_UseDivOnCarriageReturn)(/*[out, retval]*/ VARIANT_BOOL *pVal);
  321. STDMETHOD(put_UseDivOnCarriageReturn)(/*[in]*/ VARIANT_BOOL newVal);
  322. STDMETHOD(get_Busy)(/* [retval][out] */ VARIANT_BOOL *pVal);
  323. STDMETHOD(LoadDocument)(LPVARIANT path, LPVARIANT promptUser);
  324. STDMETHOD(SaveDocument)(LPVARIANT path, LPVARIANT promptUser);
  325. STDMETHOD(ExecCommand)(DHTMLEDITCMDID cmdID, OLECMDEXECOPT cmdexecopt, LPVARIANT pInVar, LPVARIANT pOutVar);
  326. STDMETHOD(QueryStatus)(DHTMLEDITCMDID cmdID, /*[out, retval]*/ DHTMLEDITCMDF* retval);
  327. STDMETHOD(SetContextMenu)(/*[in]*/ LPVARIANT menuStrings, /*[in]*/ LPVARIANT menuStates);
  328. STDMETHOD(NewDocument)(void);
  329. STDMETHOD(PrintDocument)(VARIANT* pvarWithUI);
  330. STDMETHOD(LoadURL)(BSTR url);
  331. STDMETHOD(FilterSourceCode)(/*[in]*/ BSTR sourceCodeIn, /*[out, retval]*/ BSTR* sourceCodeOut);
  332. STDMETHOD(Refresh)(void);
  333. // IOleObject
  334. STDMETHOD(SetClientSite)(IOleClientSite *pClientSite);
  335. STDMETHOD(GetClientSite)(IOleClientSite **ppClientSite);
  336. STDMETHOD(SetHostNames)(LPCOLESTR szContainerApp, LPCOLESTR szContainerObj);
  337. STDMETHOD(Close)(DWORD dwSaveOption);
  338. STDMETHOD(SetMoniker)(DWORD dwWhichMoniker, IMoniker* pmk);
  339. STDMETHOD(GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker** ppmk );
  340. STDMETHOD(InitFromData)(IDataObject* pDataObject, BOOL fCreation, DWORD dwReserved);
  341. STDMETHOD(GetClipboardData)(DWORD dwReserved, IDataObject** ppDataObject);
  342. STDMETHOD(DoVerb)(LONG iVerb, LPMSG lpmsg, IOleClientSite* pActiveSite , LONG lindex , HWND hwndParent, LPCRECT lprcPosRect);
  343. STDMETHOD(EnumVerbs)(IEnumOLEVERB **ppEnumOleVerb);
  344. STDMETHOD(Update)(void);
  345. STDMETHOD(IsUpToDate)(void);
  346. STDMETHOD(GetUserClassID)(CLSID *pClsid);
  347. STDMETHOD(GetUserType)(DWORD dwFormOfType, LPOLESTR *pszUserType);
  348. STDMETHOD(SetExtent)(DWORD dwDrawAspect, SIZEL *psizel);
  349. STDMETHOD(GetExtent)(DWORD dwDrawAspect, SIZEL *psizel);
  350. STDMETHOD(Advise)(IAdviseSink *pAdvSink, DWORD *pdwConnection);
  351. STDMETHOD(Unadvise)(DWORD dwConnection);
  352. STDMETHOD(EnumAdvise)(IEnumSTATDATA **ppenumAdvise);
  353. STDMETHOD(GetMiscStatus)(DWORD dwAspect, DWORD *pdwStatus);
  354. STDMETHOD(SetColorScheme)(LOGPALETTE* pLogpal);
  355. // IServiceProvider
  356. STDMETHODIMP QueryService( REFGUID guidService, REFIID riid, void** ppv );
  357. // IInternetSecurityManager
  358. STDMETHOD(GetSecurityId)(LPCWSTR pwszUrl, BYTE *pbSecurityId, DWORD *pcbSecurityId, DWORD_PTR dwReserved);
  359. STDMETHOD(GetSecuritySite)(IInternetSecurityMgrSite **ppSite);
  360. STDMETHOD(GetZoneMappings)(DWORD dwZone, IEnumString **ppenumString, DWORD dwFlags);
  361. STDMETHOD(MapUrlToZone)(LPCWSTR pwszUrl, DWORD *pdwZone, DWORD dwFlags);
  362. STDMETHOD(ProcessUrlAction)(LPCWSTR pwszUrl, DWORD dwAction, BYTE* pPolicy, DWORD cbPolicy, BYTE* pContext, DWORD cbContext, DWORD dwFlags, DWORD dwReserved);
  363. STDMETHOD(QueryCustomPolicy)(LPCWSTR pwszUrl, REFGUID guidKey, BYTE **ppPolicy, DWORD *pcbPolicy, BYTE *pContext, DWORD cbContext, DWORD dwReserved);
  364. STDMETHOD(SetSecuritySite)(IInternetSecurityMgrSite *pSite);
  365. STDMETHOD(SetZoneMapping)(DWORD dwZone, LPCWSTR lpszPattern, DWORD dwFlags);
  366. DECLARE_GET_CONTROLLING_UNKNOWN()
  367. // ATL helper functions override
  368. DECLARE_PROTECT_FINAL_CONSTRUCT()
  369. HRESULT FinalConstruct();
  370. void FinalRelease();
  371. protected:
  372. HRESULT PromptOpenFile(LPTSTR pPath, ULONG ulPathLen);
  373. HRESULT PromptSaveAsFile(LPTSTR pPath, ULONG ulPathLen);
  374. protected:
  375. IUnknown* m_punkInnerCtl;
  376. IDHTMLSafe* m_pInnerCtl;
  377. IOleObject* m_pInnerIOleObj;
  378. IInterconnector* m_pInterconnect;
  379. CEventXferSink* m_pXferSink;
  380. IConnectionPoint* m_piInnerCtlConPt;
  381. DWORD m_dwXferCookie;
  382. };
  383. #endif //__DHTMLEDIT_H_