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.

319 lines
15 KiB

  1. #ifndef __MEHOST_H
  2. #define __MEHOST_H
  3. #include "ibodyobj.h"
  4. #include "mshtmhst.h"
  5. #include "secutil.h"
  6. // WM_NOTIFY messages sent to the parent
  7. #define BDN_FIRST (9000)
  8. #define BDN_HEADERDBLCLK (BDN_FIRST + 1)
  9. #define BDN_DOWNLOADCOMPLETE (BDN_FIRST + 2)
  10. #define BDN_MARKASSECURE (BDN_FIRST + 3)
  11. #define MAX_DATA_MESSAGES 3
  12. #define C_RGBCOLORS 16
  13. extern const DWORD rgrgbColors16[C_RGBCOLORS];
  14. class CMimeEditDocHost:
  15. public IOleInPlaceFrame,
  16. public IOleInPlaceSite,
  17. public IOleClientSite,
  18. public IOleControlSite,
  19. public IOleDocumentSite,
  20. public IOleCommandTarget,
  21. public IBodyObj2,
  22. public IDocHostUIHandler,
  23. public IPropertyNotifySink,
  24. public IPersistMime,
  25. public IDispatch
  26. {
  27. public:
  28. // IUnknown methods
  29. virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *);
  30. virtual ULONG STDMETHODCALLTYPE AddRef();
  31. virtual ULONG STDMETHODCALLTYPE Release();
  32. // IOleWindow methods
  33. virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *);
  34. virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL);
  35. // IOleInPlaceUIWindow methods
  36. virtual HRESULT STDMETHODCALLTYPE GetBorder(LPRECT);
  37. virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(LPCBORDERWIDTHS);
  38. virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(LPCBORDERWIDTHS);
  39. virtual HRESULT STDMETHODCALLTYPE SetActiveObject(IOleInPlaceActiveObject *, LPCOLESTR);
  40. // IOleInPlaceFrame methods
  41. virtual HRESULT STDMETHODCALLTYPE InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS);
  42. virtual HRESULT STDMETHODCALLTYPE SetMenu(HMENU, HOLEMENU, HWND);
  43. virtual HRESULT STDMETHODCALLTYPE RemoveMenus(HMENU);
  44. virtual HRESULT STDMETHODCALLTYPE SetStatusText(LPCOLESTR);
  45. virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL);
  46. virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG, WORD);
  47. // IOleInPlaceSite methods.
  48. virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate();
  49. virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate();
  50. virtual HRESULT STDMETHODCALLTYPE OnUIActivate();
  51. virtual HRESULT STDMETHODCALLTYPE GetWindowContext(LPOLEINPLACEFRAME *, LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
  52. virtual HRESULT STDMETHODCALLTYPE Scroll(SIZE);
  53. virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(BOOL);
  54. virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate();
  55. virtual HRESULT STDMETHODCALLTYPE DiscardUndoState();
  56. virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo();
  57. virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(LPCRECT);
  58. // IOleClientSite methods.
  59. virtual HRESULT STDMETHODCALLTYPE SaveObject();
  60. virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD, DWORD, LPMONIKER *);
  61. virtual HRESULT STDMETHODCALLTYPE GetContainer(LPOLECONTAINER *);
  62. virtual HRESULT STDMETHODCALLTYPE ShowObject();
  63. virtual HRESULT STDMETHODCALLTYPE OnShowWindow(BOOL);
  64. virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout();
  65. // IOleControlSite
  66. virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged();
  67. virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(BOOL fLock);
  68. virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(LPDISPATCH *ppDisp);
  69. virtual HRESULT STDMETHODCALLTYPE TransformCoords(POINTL *pPtlHimetric, POINTF *pPtfContainer,DWORD dwFlags);
  70. virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(MSG *lpMsg,DWORD grfModifiers);
  71. virtual HRESULT STDMETHODCALLTYPE OnFocus(BOOL fGotFocus);
  72. virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame(void);
  73. // IOleDocumentSite
  74. virtual HRESULT STDMETHODCALLTYPE ActivateMe(LPOLEDOCUMENTVIEW);
  75. // IOleCommandTarget
  76. virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *, ULONG, OLECMD prgCmds[], OLECMDTEXT *);
  77. virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *, DWORD, DWORD, VARIANTARG *, VARIANTARG *);
  78. // IBodyObj2
  79. virtual HRESULT STDMETHODCALLTYPE HrUpdateFormatBar();
  80. virtual HRESULT STDMETHODCALLTYPE HrClearFormatting();
  81. virtual HRESULT STDMETHODCALLTYPE HrInit(HWND hwndParent, DWORD dwFlags, IBodyOptions *pBodyOptions);
  82. virtual HRESULT STDMETHODCALLTYPE HrClose();
  83. virtual HRESULT STDMETHODCALLTYPE HrResetDocument();
  84. virtual HRESULT STDMETHODCALLTYPE HrSetStatusBar(CStatusBar *pStatus);
  85. virtual HRESULT STDMETHODCALLTYPE HrUpdateToolbar(HWND hwndToolbar);
  86. virtual HRESULT STDMETHODCALLTYPE HrShow(BOOL fVisible);
  87. virtual HRESULT STDMETHODCALLTYPE HrOnInitMenuPopup(HMENU hmenuPopup, UINT uID);
  88. virtual HRESULT STDMETHODCALLTYPE HrWMMenuSelect(HWND hwnd, WPARAM wParam, LPARAM lParam);
  89. virtual HRESULT STDMETHODCALLTYPE HrWMDrawMenuItem(HWND hwnd, LPDRAWITEMSTRUCT pdis);
  90. virtual HRESULT STDMETHODCALLTYPE HrWMMeasureMenuItem(HWND hwnd, LPMEASUREITEMSTRUCT pmis);
  91. virtual HRESULT STDMETHODCALLTYPE HrWMCommand(HWND hwnd, int id, WORD wCmd);
  92. virtual HRESULT STDMETHODCALLTYPE HrGetWindow(HWND *pHwnd);
  93. virtual HRESULT STDMETHODCALLTYPE HrSetSize(LPRECT prc);
  94. virtual HRESULT STDMETHODCALLTYPE HrSetNoSecUICallback(DWORD dwCookie, PFNNOSECUI pfnNoSecUI);
  95. virtual HRESULT STDMETHODCALLTYPE HrSetDragSource(BOOL fIsSource);
  96. virtual HRESULT STDMETHODCALLTYPE HrTranslateAccelerator(LPMSG lpMsg);
  97. virtual HRESULT STDMETHODCALLTYPE HrUIActivate(BOOL fActivate);
  98. virtual HRESULT STDMETHODCALLTYPE HrSetUIActivate();
  99. virtual HRESULT STDMETHODCALLTYPE HrFrameActivate(BOOL fActivate);
  100. virtual HRESULT STDMETHODCALLTYPE HrHasFocus();
  101. virtual HRESULT STDMETHODCALLTYPE HrSetBkGrndPicture(LPTSTR pszPicture);
  102. virtual HRESULT STDMETHODCALLTYPE GetTabStopArray(HWND *rgTSArray, int *pcArrayCount);
  103. virtual HRESULT STDMETHODCALLTYPE PublicFilterDataObject(IDataObject *pDO, IDataObject **ppDORet);
  104. virtual HRESULT STDMETHODCALLTYPE HrSaveAttachment();
  105. virtual HRESULT STDMETHODCALLTYPE SetEventSink(IMimeEditEventSink *pEventSink);
  106. virtual HRESULT STDMETHODCALLTYPE LoadHtmlErrorPage(LPCSTR pszURL);
  107. virtual HRESULT STDMETHODCALLTYPE HrSpellCheck(BOOL fSuppressDoneMsg);
  108. virtual HRESULT STDMETHODCALLTYPE HrIsDirty(BOOL *pfDirty);
  109. virtual HRESULT STDMETHODCALLTYPE HrSetDirtyFlag(BOOL fDirty);
  110. virtual HRESULT STDMETHODCALLTYPE HrIsEmpty(BOOL *pfEmpty);
  111. virtual HRESULT STDMETHODCALLTYPE HrUnloadAll(UINT idsDefaultBody, DWORD dwFlags);
  112. virtual HRESULT STDMETHODCALLTYPE HrSetStyle(DWORD dwStyle);
  113. virtual HRESULT STDMETHODCALLTYPE HrGetStyle(DWORD *pdwStyle);
  114. virtual HRESULT STDMETHODCALLTYPE HrEnableHTMLMode(BOOL fOn);
  115. virtual HRESULT STDMETHODCALLTYPE HrDowngradeToPlainText();
  116. virtual HRESULT STDMETHODCALLTYPE HrSetText(LPSTR lpsz);
  117. virtual HRESULT STDMETHODCALLTYPE HrPerformROT13Encoding();
  118. virtual HRESULT STDMETHODCALLTYPE HrInsertTextFile(LPSTR lpsz);
  119. virtual HRESULT STDMETHODCALLTYPE HrInsertTextFileFromDialog();
  120. virtual HRESULT STDMETHODCALLTYPE HrViewSource(DWORD dwViewType);
  121. virtual HRESULT STDMETHODCALLTYPE HrSetPreviewFormat(LPSTR lpsz);
  122. virtual HRESULT STDMETHODCALLTYPE HrSetEditMode(BOOL fOn);
  123. virtual HRESULT STDMETHODCALLTYPE HrIsEditMode(BOOL *pfOn);
  124. virtual HRESULT STDMETHODCALLTYPE HrSetCharset(HCHARSET hCharset);
  125. virtual HRESULT STDMETHODCALLTYPE HrGetCharset(HCHARSET *phCharset);
  126. virtual HRESULT STDMETHODCALLTYPE HrSaveAsStationery(LPWSTR pwszFile);
  127. virtual HRESULT STDMETHODCALLTYPE HrApplyStationery(LPWSTR pwszFile);
  128. virtual HRESULT STDMETHODCALLTYPE HrHandsOffStorage();
  129. virtual HRESULT STDMETHODCALLTYPE HrRefresh();
  130. virtual HRESULT STDMETHODCALLTYPE HrScrollPage();
  131. virtual HRESULT STDMETHODCALLTYPE UpdateBackAndStyleMenus(HMENU hmenu);
  132. // IDocHostUIHandler methods
  133. virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
  134. DWORD dwID,
  135. POINT *ppt,
  136. IUnknown *pcmdtReserved,
  137. IDispatch *pdispReserved);
  138. virtual HRESULT STDMETHODCALLTYPE GetHostInfo(DOCHOSTUIINFO *pInfo);
  139. virtual HRESULT STDMETHODCALLTYPE ShowUI(
  140. DWORD dwID,
  141. IOleInPlaceActiveObject *pActiveObject,
  142. IOleCommandTarget *pCommandTarget,
  143. IOleInPlaceFrame *pFrame,
  144. IOleInPlaceUIWindow *pDoc);
  145. virtual HRESULT STDMETHODCALLTYPE HideUI();
  146. virtual HRESULT STDMETHODCALLTYPE UpdateUI();
  147. //This function is already listed above
  148. //virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fActivate);
  149. virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate);
  150. virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate);
  151. virtual HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow);
  152. virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID);
  153. virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath(LPOLESTR *pchKey, DWORD dw);
  154. virtual HRESULT STDMETHODCALLTYPE GetDropTarget(IDropTarget *pDropTarget, IDropTarget **ppDropTarget);
  155. virtual HRESULT STDMETHODCALLTYPE GetExternal(IDispatch **ppDispatch);
  156. virtual HRESULT STDMETHODCALLTYPE TranslateUrl(DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut);
  157. virtual HRESULT STDMETHODCALLTYPE FilterDataObject( IDataObject *pDO, IDataObject **ppDORet);
  158. // IPropertyNotifySink
  159. virtual HRESULT STDMETHODCALLTYPE OnChanged(DISPID dispid);
  160. virtual HRESULT STDMETHODCALLTYPE OnRequestEdit (DISPID dispid);
  161. // IPersistMime
  162. virtual HRESULT STDMETHODCALLTYPE Load(LPMIMEMESSAGE pMsg);
  163. virtual HRESULT STDMETHODCALLTYPE Save(LPMIMEMESSAGE pMsg, DWORD dwFlags);
  164. virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
  165. // IDispatch methods
  166. virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
  167. virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
  168. virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
  169. virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
  170. CMimeEditDocHost(DWORD dwBorderFlags = MEBF_OUTERCLIENTEDGE);
  171. virtual ~CMimeEditDocHost();
  172. virtual LRESULT WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  173. virtual void OnDocumentReady();
  174. HRESULT CreateDocObj(LPCLSID pCLSID);
  175. HRESULT CloseDocObj();
  176. virtual HRESULT HrLoadURL(LPCSTR pszURL);
  177. virtual HRESULT HrEnableScrollBars(BOOL fEnable);
  178. // statics
  179. static LRESULT CALLBACK ExtWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
  180. static HRESULT HrMEDocHost_Init(BOOL fInit);
  181. protected:
  182. HWND m_hwnd,
  183. m_hwndDocObj;
  184. DWORD m_dwBorderFlags,
  185. m_dwStyle,
  186. m_dwHTMLNotifyCookie;
  187. BOOL m_fDownloading : 1,
  188. m_fUIActive : 1,
  189. m_fMarkedRead : 1,
  190. m_fBlockingOnSMime : 1,
  191. m_fIsEncrypted : 1,
  192. m_fIsSigned : 1,
  193. m_fSignTrusted : 1,
  194. m_fEncryptionOK : 1,
  195. m_fRegisteredForDocEvents : 1,
  196. m_fShowingErrorPage : 1,
  197. m_fFixedFont : 1,
  198. m_fSecDispInfo : 1,
  199. m_fSecureReceipt : 1;
  200. CStatusBar *m_pStatus;
  201. IBodyOptions *m_pBodyOptions;
  202. IHTMLDocument2 *m_pDoc;
  203. IUnknown *m_pUnkService;
  204. LPOLEINPLACEACTIVEOBJECT m_pInPlaceActiveObj;
  205. LPOLEOBJECT m_lpOleObj;
  206. LPOLECOMMANDTARGET m_pCmdTarget;
  207. LPPERSISTMIME m_pPrstMime;
  208. LPOLEDOCUMENTVIEW m_pDocView;
  209. LPMIMEMESSAGE m_pMsg,
  210. m_pSecureMessage,
  211. m_pSecurityErrorScreen;
  212. IMimeEditEventSink *m_pEventSink;
  213. virtual HRESULT OnUpdateCommands();
  214. virtual HRESULT HrPasteToAttachment();
  215. virtual void WMSize(int x, int y);
  216. virtual void OnWMSize(LPRECT prc){};
  217. virtual BOOL WMCommand(HWND, int, WORD);
  218. virtual BOOL WMNotify(int idFrom, NMHDR *pnmh);
  219. virtual HRESULT HrPostInit();
  220. virtual HRESULT HrSubWMCreate() {Assert(FALSE); return NOERROR;}
  221. virtual HRESULT HrOnDocObjCreate();
  222. BOOL WMCreate(HWND hwnd);
  223. void WMNCDestroy();
  224. HRESULT HrMarkAsRead();
  225. void OnWMTimer();
  226. HRESULT HandleButtonClicks(BSTR bstr);
  227. HRESULT DoHtmlBtnOpen(void);
  228. HRESULT DoHtmlBtnCertTrust(DWORD cmdID);
  229. HRESULT DoHtmlBtnContinue(void);
  230. HRESULT InternalLoad(IMimeMessage *pMsg);
  231. HRESULT LoadSecurely(IMimeMessage *pMsg, SECSTATE *pSecState);
  232. HRESULT ViewCertificate(PCCERT_CONTEXT pCert, HCERTSTORE hcMsg);
  233. HRESULT EditTrust(PCCERT_CONTEXT pCert, HCERTSTORE hcMsg);
  234. HRESULT RegisterForHTMLDocEvents(BOOL fOn);
  235. HRESULT ExecCommand(const GUID *guid, DWORD cmd);
  236. HRESULT ExecGetBool(const GUID *guid, DWORD cmd, BOOL *pfValue);
  237. HRESULT ExecSetBool(const GUID *guid, DWORD cmd, BOOL fValue);
  238. HRESULT ExecGetI4(const GUID *guid, DWORD cmd, DWORD *pdwValue);
  239. HRESULT ExecSetI4(const GUID *guid, DWORD cmd, DWORD dwValue);
  240. HRESULT ExecGetI8(const GUID *guid, DWORD cmd, ULONGLONG *pullValue);
  241. HRESULT ExecSetI8(const GUID *guid, DWORD cmd, ULONGLONG ullValue);
  242. HRESULT ExecGetText(const GUID *guid, DWORD cmd, LPSTR *ppsz);
  243. HRESULT ExecSetText(const GUID *guid, DWORD cmd, LPSTR psz);
  244. HRESULT ExecGetTextW(const GUID *guid, DWORD cmd, LPWSTR *ppwsz);
  245. HRESULT ExecSetTextW(const GUID *guid, DWORD cmd, LPWSTR pwsz);
  246. HRESULT Show();
  247. HRESULT HrRegisterLoadNotify(BOOL fRegister);
  248. HRESULT HrRegisterNotify(BOOL fRegister, LPCTSTR szElement, REFIID riidSink, IUnknown *pUnkSink, DWORD *pdwCookie);
  249. HRESULT HrAddToFavorites(BSTR bstrDescr, BSTR bstrURL);
  250. HRESULT HrAddToWab(BSTR bstr);
  251. HRESULT HrGetElement(LPCTSTR pszName, IHTMLElement **ppElem);
  252. private:
  253. ULONG m_cRef;
  254. DWORD m_dwDocStyle;
  255. HMENU m_hmenuColor,
  256. m_hmenuStyle;
  257. HRESULT HrPrint(BOOL fPrompt);
  258. HRESULT HrBackgroundImage();
  259. HRESULT HrBackgroundSound();
  260. void UpdateInsertMenu(HMENU hmenu);
  261. void UpdateEditMenu(HMENU hmenu);
  262. void UpdateViewMenu(HMENU hmenu);
  263. void EnableStandardCmd(UINT idm, LPBOOL pbEnable);
  264. HRESULT HrInsertSignature(int id);
  265. HRESULT HrCheckColor();
  266. HRESULT CreateDocView();
  267. HRESULT OnCreate(HWND hwnd);
  268. HRESULT OnNCDestroy();
  269. HRESULT OnDestroy();
  270. void OnReadyStateChanged();
  271. HRESULT HrIsHTMLMode();
  272. HRESULT CycleSrcTabs(BOOL fFwd);
  273. HRESULT QuerySingleMimeEditCmd(ULONG uCmd, ULONG *pcmf);
  274. HRESULT QuerySingleFormsCmd(ULONG uCmd, ULONG *pcmf);
  275. HRESULT QuerySingleStdCmd(ULONG uCmd, ULONG *pcmf);
  276. };
  277. typedef CMimeEditDocHost MIMEEDITDOCHOST;
  278. typedef MIMEEDITDOCHOST *LPMIMEEDITDOCHOST;
  279. #endif