|
|
#ifndef __MEHOST_H
#define __MEHOST_H
#include "ibodyobj.h"
#include "mshtmhst.h"
#include "secutil.h"
// WM_NOTIFY messages sent to the parent
#define BDN_FIRST (9000)
#define BDN_HEADERDBLCLK (BDN_FIRST + 1)
#define BDN_DOWNLOADCOMPLETE (BDN_FIRST + 2)
#define BDN_MARKASSECURE (BDN_FIRST + 3)
#define MAX_DATA_MESSAGES 3
#define C_RGBCOLORS 16
extern const DWORD rgrgbColors16[C_RGBCOLORS];
class CMimeEditDocHost: public IOleInPlaceFrame, public IOleInPlaceSite, public IOleClientSite, public IOleControlSite, public IOleDocumentSite, public IOleCommandTarget, public IBodyObj2, public IDocHostUIHandler, public IPropertyNotifySink, public IPersistMime, public IDispatch { public: // IUnknown methods
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *); virtual ULONG STDMETHODCALLTYPE AddRef(); virtual ULONG STDMETHODCALLTYPE Release();
// IOleWindow methods
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *); virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL);
// IOleInPlaceUIWindow methods
virtual HRESULT STDMETHODCALLTYPE GetBorder(LPRECT); virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(LPCBORDERWIDTHS); virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(LPCBORDERWIDTHS); virtual HRESULT STDMETHODCALLTYPE SetActiveObject(IOleInPlaceActiveObject *, LPCOLESTR);
// IOleInPlaceFrame methods
virtual HRESULT STDMETHODCALLTYPE InsertMenus(HMENU, LPOLEMENUGROUPWIDTHS); virtual HRESULT STDMETHODCALLTYPE SetMenu(HMENU, HOLEMENU, HWND); virtual HRESULT STDMETHODCALLTYPE RemoveMenus(HMENU); virtual HRESULT STDMETHODCALLTYPE SetStatusText(LPCOLESTR); virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL); virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG, WORD);
// IOleInPlaceSite methods.
virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate(); virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate(); virtual HRESULT STDMETHODCALLTYPE OnUIActivate(); virtual HRESULT STDMETHODCALLTYPE GetWindowContext(LPOLEINPLACEFRAME *, LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO); virtual HRESULT STDMETHODCALLTYPE Scroll(SIZE); virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(BOOL); virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate(); virtual HRESULT STDMETHODCALLTYPE DiscardUndoState(); virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo(); virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(LPCRECT);
// IOleClientSite methods.
virtual HRESULT STDMETHODCALLTYPE SaveObject(); virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD, DWORD, LPMONIKER *); virtual HRESULT STDMETHODCALLTYPE GetContainer(LPOLECONTAINER *); virtual HRESULT STDMETHODCALLTYPE ShowObject(); virtual HRESULT STDMETHODCALLTYPE OnShowWindow(BOOL); virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout();
// IOleControlSite
virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged(); virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(BOOL fLock); virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(LPDISPATCH *ppDisp); virtual HRESULT STDMETHODCALLTYPE TransformCoords(POINTL *pPtlHimetric, POINTF *pPtfContainer,DWORD dwFlags); virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(MSG *lpMsg,DWORD grfModifiers); virtual HRESULT STDMETHODCALLTYPE OnFocus(BOOL fGotFocus); virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame(void);
// IOleDocumentSite
virtual HRESULT STDMETHODCALLTYPE ActivateMe(LPOLEDOCUMENTVIEW);
// IOleCommandTarget
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *, ULONG, OLECMD prgCmds[], OLECMDTEXT *); virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *, DWORD, DWORD, VARIANTARG *, VARIANTARG *);
// IBodyObj2
virtual HRESULT STDMETHODCALLTYPE HrUpdateFormatBar(); virtual HRESULT STDMETHODCALLTYPE HrClearFormatting(); virtual HRESULT STDMETHODCALLTYPE HrInit(HWND hwndParent, DWORD dwFlags, IBodyOptions *pBodyOptions); virtual HRESULT STDMETHODCALLTYPE HrClose(); virtual HRESULT STDMETHODCALLTYPE HrResetDocument(); virtual HRESULT STDMETHODCALLTYPE HrSetStatusBar(CStatusBar *pStatus); virtual HRESULT STDMETHODCALLTYPE HrUpdateToolbar(HWND hwndToolbar); virtual HRESULT STDMETHODCALLTYPE HrShow(BOOL fVisible); virtual HRESULT STDMETHODCALLTYPE HrOnInitMenuPopup(HMENU hmenuPopup, UINT uID); virtual HRESULT STDMETHODCALLTYPE HrWMMenuSelect(HWND hwnd, WPARAM wParam, LPARAM lParam); virtual HRESULT STDMETHODCALLTYPE HrWMDrawMenuItem(HWND hwnd, LPDRAWITEMSTRUCT pdis); virtual HRESULT STDMETHODCALLTYPE HrWMMeasureMenuItem(HWND hwnd, LPMEASUREITEMSTRUCT pmis); virtual HRESULT STDMETHODCALLTYPE HrWMCommand(HWND hwnd, int id, WORD wCmd); virtual HRESULT STDMETHODCALLTYPE HrGetWindow(HWND *pHwnd); virtual HRESULT STDMETHODCALLTYPE HrSetSize(LPRECT prc); virtual HRESULT STDMETHODCALLTYPE HrSetNoSecUICallback(DWORD dwCookie, PFNNOSECUI pfnNoSecUI); virtual HRESULT STDMETHODCALLTYPE HrSetDragSource(BOOL fIsSource); virtual HRESULT STDMETHODCALLTYPE HrTranslateAccelerator(LPMSG lpMsg); virtual HRESULT STDMETHODCALLTYPE HrUIActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE HrSetUIActivate(); virtual HRESULT STDMETHODCALLTYPE HrFrameActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE HrHasFocus(); virtual HRESULT STDMETHODCALLTYPE HrSetBkGrndPicture(LPTSTR pszPicture); virtual HRESULT STDMETHODCALLTYPE GetTabStopArray(HWND *rgTSArray, int *pcArrayCount); virtual HRESULT STDMETHODCALLTYPE PublicFilterDataObject(IDataObject *pDO, IDataObject **ppDORet); virtual HRESULT STDMETHODCALLTYPE HrSaveAttachment(); virtual HRESULT STDMETHODCALLTYPE SetEventSink(IMimeEditEventSink *pEventSink); virtual HRESULT STDMETHODCALLTYPE LoadHtmlErrorPage(LPCSTR pszURL);
virtual HRESULT STDMETHODCALLTYPE HrSpellCheck(BOOL fSuppressDoneMsg); virtual HRESULT STDMETHODCALLTYPE HrIsDirty(BOOL *pfDirty); virtual HRESULT STDMETHODCALLTYPE HrSetDirtyFlag(BOOL fDirty); virtual HRESULT STDMETHODCALLTYPE HrIsEmpty(BOOL *pfEmpty); virtual HRESULT STDMETHODCALLTYPE HrUnloadAll(UINT idsDefaultBody, DWORD dwFlags); virtual HRESULT STDMETHODCALLTYPE HrSetStyle(DWORD dwStyle); virtual HRESULT STDMETHODCALLTYPE HrGetStyle(DWORD *pdwStyle); virtual HRESULT STDMETHODCALLTYPE HrEnableHTMLMode(BOOL fOn); virtual HRESULT STDMETHODCALLTYPE HrDowngradeToPlainText(); virtual HRESULT STDMETHODCALLTYPE HrSetText(LPSTR lpsz); virtual HRESULT STDMETHODCALLTYPE HrPerformROT13Encoding(); virtual HRESULT STDMETHODCALLTYPE HrInsertTextFile(LPSTR lpsz); virtual HRESULT STDMETHODCALLTYPE HrInsertTextFileFromDialog(); virtual HRESULT STDMETHODCALLTYPE HrViewSource(DWORD dwViewType); virtual HRESULT STDMETHODCALLTYPE HrSetPreviewFormat(LPSTR lpsz); virtual HRESULT STDMETHODCALLTYPE HrSetEditMode(BOOL fOn); virtual HRESULT STDMETHODCALLTYPE HrIsEditMode(BOOL *pfOn); virtual HRESULT STDMETHODCALLTYPE HrSetCharset(HCHARSET hCharset); virtual HRESULT STDMETHODCALLTYPE HrGetCharset(HCHARSET *phCharset); virtual HRESULT STDMETHODCALLTYPE HrSaveAsStationery(LPWSTR pwszFile); virtual HRESULT STDMETHODCALLTYPE HrApplyStationery(LPWSTR pwszFile); virtual HRESULT STDMETHODCALLTYPE HrHandsOffStorage(); virtual HRESULT STDMETHODCALLTYPE HrRefresh(); virtual HRESULT STDMETHODCALLTYPE HrScrollPage(); virtual HRESULT STDMETHODCALLTYPE UpdateBackAndStyleMenus(HMENU hmenu);
// IDocHostUIHandler methods
virtual HRESULT STDMETHODCALLTYPE ShowContextMenu( DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved); virtual HRESULT STDMETHODCALLTYPE GetHostInfo(DOCHOSTUIINFO *pInfo); virtual HRESULT STDMETHODCALLTYPE ShowUI( DWORD dwID, IOleInPlaceActiveObject *pActiveObject, IOleCommandTarget *pCommandTarget, IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc); virtual HRESULT STDMETHODCALLTYPE HideUI(); virtual HRESULT STDMETHODCALLTYPE UpdateUI(); //This function is already listed above
//virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fActivate);
virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate); virtual HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow); virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID); virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath(LPOLESTR *pchKey, DWORD dw); virtual HRESULT STDMETHODCALLTYPE GetDropTarget(IDropTarget *pDropTarget, IDropTarget **ppDropTarget); virtual HRESULT STDMETHODCALLTYPE GetExternal(IDispatch **ppDispatch); virtual HRESULT STDMETHODCALLTYPE TranslateUrl(DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut); virtual HRESULT STDMETHODCALLTYPE FilterDataObject( IDataObject *pDO, IDataObject **ppDORet);
// IPropertyNotifySink
virtual HRESULT STDMETHODCALLTYPE OnChanged(DISPID dispid); virtual HRESULT STDMETHODCALLTYPE OnRequestEdit (DISPID dispid);
// IPersistMime
virtual HRESULT STDMETHODCALLTYPE Load(LPMIMEMESSAGE pMsg); virtual HRESULT STDMETHODCALLTYPE Save(LPMIMEMESSAGE pMsg, DWORD dwFlags); virtual HRESULT STDMETHODCALLTYPE GetClassID(CLSID *pClsID);
// IDispatch methods
virtual HRESULT STDMETHODCALLTYPE Invoke(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr); virtual HRESULT STDMETHODCALLTYPE GetIDsOfNames(REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId); virtual HRESULT STDMETHODCALLTYPE GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo); virtual HRESULT STDMETHODCALLTYPE GetTypeInfoCount(UINT *pctinfo);
CMimeEditDocHost(DWORD dwBorderFlags = MEBF_OUTERCLIENTEDGE); virtual ~CMimeEditDocHost(); virtual LRESULT WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam); virtual void OnDocumentReady();
HRESULT CreateDocObj(LPCLSID pCLSID); HRESULT CloseDocObj();
virtual HRESULT HrLoadURL(LPCSTR pszURL); virtual HRESULT HrEnableScrollBars(BOOL fEnable);
// statics
static LRESULT CALLBACK ExtWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
static HRESULT HrMEDocHost_Init(BOOL fInit);
protected: HWND m_hwnd, m_hwndDocObj; DWORD m_dwBorderFlags, m_dwStyle, m_dwHTMLNotifyCookie; BOOL m_fDownloading : 1, m_fUIActive : 1, m_fMarkedRead : 1, m_fBlockingOnSMime : 1, m_fIsEncrypted : 1, m_fIsSigned : 1, m_fSignTrusted : 1, m_fEncryptionOK : 1, m_fRegisteredForDocEvents : 1, m_fShowingErrorPage : 1, m_fFixedFont : 1, m_fSecDispInfo : 1, m_fSecureReceipt : 1; CStatusBar *m_pStatus; IBodyOptions *m_pBodyOptions; IHTMLDocument2 *m_pDoc; IUnknown *m_pUnkService; LPOLEINPLACEACTIVEOBJECT m_pInPlaceActiveObj; LPOLEOBJECT m_lpOleObj; LPOLECOMMANDTARGET m_pCmdTarget; LPPERSISTMIME m_pPrstMime; LPOLEDOCUMENTVIEW m_pDocView; LPMIMEMESSAGE m_pMsg, m_pSecureMessage, m_pSecurityErrorScreen; IMimeEditEventSink *m_pEventSink;
virtual HRESULT OnUpdateCommands(); virtual HRESULT HrPasteToAttachment(); virtual void WMSize(int x, int y); virtual void OnWMSize(LPRECT prc){}; virtual BOOL WMCommand(HWND, int, WORD); virtual BOOL WMNotify(int idFrom, NMHDR *pnmh); virtual HRESULT HrPostInit(); virtual HRESULT HrSubWMCreate() {Assert(FALSE); return NOERROR;} virtual HRESULT HrOnDocObjCreate(); BOOL WMCreate(HWND hwnd); void WMNCDestroy(); HRESULT HrMarkAsRead(); void OnWMTimer();
HRESULT HandleButtonClicks(BSTR bstr); HRESULT DoHtmlBtnOpen(void); HRESULT DoHtmlBtnCertTrust(DWORD cmdID); HRESULT DoHtmlBtnContinue(void); HRESULT InternalLoad(IMimeMessage *pMsg); HRESULT LoadSecurely(IMimeMessage *pMsg, SECSTATE *pSecState); HRESULT ViewCertificate(PCCERT_CONTEXT pCert, HCERTSTORE hcMsg); HRESULT EditTrust(PCCERT_CONTEXT pCert, HCERTSTORE hcMsg);
HRESULT RegisterForHTMLDocEvents(BOOL fOn);
HRESULT ExecCommand(const GUID *guid, DWORD cmd); HRESULT ExecGetBool(const GUID *guid, DWORD cmd, BOOL *pfValue); HRESULT ExecSetBool(const GUID *guid, DWORD cmd, BOOL fValue); HRESULT ExecGetI4(const GUID *guid, DWORD cmd, DWORD *pdwValue); HRESULT ExecSetI4(const GUID *guid, DWORD cmd, DWORD dwValue); HRESULT ExecGetI8(const GUID *guid, DWORD cmd, ULONGLONG *pullValue); HRESULT ExecSetI8(const GUID *guid, DWORD cmd, ULONGLONG ullValue); HRESULT ExecGetText(const GUID *guid, DWORD cmd, LPSTR *ppsz); HRESULT ExecSetText(const GUID *guid, DWORD cmd, LPSTR psz); HRESULT ExecGetTextW(const GUID *guid, DWORD cmd, LPWSTR *ppwsz); HRESULT ExecSetTextW(const GUID *guid, DWORD cmd, LPWSTR pwsz);
HRESULT Show(); HRESULT HrRegisterLoadNotify(BOOL fRegister); HRESULT HrRegisterNotify(BOOL fRegister, LPCTSTR szElement, REFIID riidSink, IUnknown *pUnkSink, DWORD *pdwCookie); HRESULT HrAddToFavorites(BSTR bstrDescr, BSTR bstrURL); HRESULT HrAddToWab(BSTR bstr); HRESULT HrGetElement(LPCTSTR pszName, IHTMLElement **ppElem);
private: ULONG m_cRef; DWORD m_dwDocStyle; HMENU m_hmenuColor, m_hmenuStyle;
HRESULT HrPrint(BOOL fPrompt); HRESULT HrBackgroundImage(); HRESULT HrBackgroundSound();
void UpdateInsertMenu(HMENU hmenu); void UpdateEditMenu(HMENU hmenu); void UpdateViewMenu(HMENU hmenu); void EnableStandardCmd(UINT idm, LPBOOL pbEnable);
HRESULT HrInsertSignature(int id); HRESULT HrCheckColor(); HRESULT CreateDocView();
HRESULT OnCreate(HWND hwnd); HRESULT OnNCDestroy(); HRESULT OnDestroy(); void OnReadyStateChanged(); HRESULT HrIsHTMLMode(); HRESULT CycleSrcTabs(BOOL fFwd);
HRESULT QuerySingleMimeEditCmd(ULONG uCmd, ULONG *pcmf); HRESULT QuerySingleFormsCmd(ULONG uCmd, ULONG *pcmf); HRESULT QuerySingleStdCmd(ULONG uCmd, ULONG *pcmf); };
typedef CMimeEditDocHost MIMEEDITDOCHOST; typedef MIMEEDITDOCHOST *LPMIMEEDITDOCHOST;
#endif
|