// StylerView.h // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #pragma once #include "StylerDoc.h" static const CLSID CGID_IWebBrowser = { 0xED016940L, 0xBD5B, 0x11cf, 0xBA, 0x4E, 0x00, 0xC0, 0x4F, 0xD7, 0x08, 0x16 }; #define HTMLID_FIND 1 #define HTMLID_VIEWSOURCE 2 #define HTMLID_OPTIONS 3 #define DISPID_AMBIENT_DLCONTROL (-5512) #define DLCTL_DLIMAGES 0x00000010 #define DLCTL_VIDEOS 0x00000020 #define DLCTL_BGSOUNDS 0x00000040 #define IDM_COPY 15 #define IDM_CUT 16 #define IDM_PASTE 26 class CStylerView : public CHtmlView { protected: // create from serialization only CStylerView(); DECLARE_DYNCREATE(CStylerView) // Attributes public: static BOOL m_bFilterAll; static BOOL m_bFilterList; protected: BOOL m_bBack, m_bForward; BOOL m_bActive; int m_nLoadingState; int m_nProgress; BOOL m_bPopup; BOOL m_bLock; LPDISPATCH m_lpDisp; // static CImageList m_lstTabImages; static HICON m_arrIcons[5]; static long m_nFontSize; static BOOL m_bShowImages; UINT m_nEncoding; struct MOUSEINFO { long nLClick; long nRClick; CPoint ptClick; void Clear() { nLClick = 0; nRClick = 0; } } m_infMouse; // Operations public: BOOL GetTabIcon(CImageList** imgList, int* nIndex); void SetLoading(BOOL bLoading); CStylerDoc* GetDocument() const; static void Load(); static void Save(); protected: BOOL IsLoading() { return m_nLoadingState < 3; } void RefreshExplorer(); BOOL QueryFormsCommand(DWORD dwCommandID); void ExecFormsCommand(DWORD dwCommandID); BOOL PopupFilter(CString str); void SetAddress(); CComPtr GetHtmlDocument2(); // Overrides public: // Implementation public: virtual ~CStylerView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: //{{AFX_MSG(CChildFrame) afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnParentNotify(UINT message, LPARAM lParam); afx_msg void OnToolsOptions(); afx_msg void OnUpdateGotoBack(CCmdUI* pCmdUI); afx_msg void OnUpdateGotoForward(CCmdUI* pCmdUI); afx_msg void OnFileProperties(); afx_msg void OnEditSelectall(); afx_msg void OnFilePrintPreview(); afx_msg void OnFileSaveAs(); afx_msg void OnEditFind(); afx_msg void OnViewSource(); afx_msg void OnShowImages(); afx_msg void OnUpdateShowImages(CCmdUI* pCmdUI); afx_msg void OnAddToFavorites(); afx_msg void OnUpdateAddPageHere(CCmdUI* pCmdUI); afx_msg void OnEditCopy(); afx_msg void OnUpdateEditCopy(CCmdUI* pCmdUI); afx_msg void OnEditCut(); afx_msg void OnUpdateEditCut(CCmdUI* pCmdUI); afx_msg void OnEditPaste(); afx_msg void OnUpdateEditPaste(CCmdUI* pCmdUI); afx_msg void OnTextSize(); afx_msg void OnTextSizeRange(UINT nID); afx_msg void OnUpdateTextSizeRange(CCmdUI* pCmdUI); afx_msg void OnViewEncodingRange(UINT); afx_msg void OnUpdateViewEncodingRange(CCmdUI* pCmdUI); afx_msg void OnViewLock(); afx_msg void OnUpdateViewLock(CCmdUI* pCmdUI); afx_msg void OnAddPageHere(NMHDR* pNMHDR, LRESULT* pResult); afx_msg LRESULT OnGetTabIcon(WPARAM, LPARAM); afx_msg void OnUpdateIndicator(CCmdUI* pCmdUI); //}}AFX_MSG public: //{{AFX_VIRTUAL(CChildFrame) virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView); virtual void OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel); virtual void OnTitleChange(LPCTSTR lpszText); virtual void OnCommandStateChange(long nCommand, BOOL bEnable); virtual void OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel); virtual void OnProgressChange(long nProgress, long nProgressMax); virtual void PostNcDestroy(); virtual void OnInitialUpdate(); // called first time after construct virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual BOOL PreTranslateMessage(MSG* pMsg); virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext); virtual void NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL); virtual void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL); virtual void OnLinkStartDrag(NMHDR* pNMHDR, LRESULT* pRes); //}}AFX_VIRTUAL protected: DECLARE_MESSAGE_MAP() public: // // for IDocHostUIHandler // BEGIN_INTERFACE_PART(DocHostUIHandler, IDocHostUIHandler) STDMETHOD(ShowContextMenu) (/* [in] */ DWORD dwID, /* [in] */ POINT __RPC_FAR* ppt, /* [in] */ IUnknown __RPC_FAR* pcmdtReserved, /* [in] */ IDispatch __RPC_FAR* pdispReserved); STDMETHOD(GetHostInfo) ( /* [out][in] */ DOCHOSTUIINFO __RPC_FAR* pInfo); STDMETHOD(ShowUI) ( /* [in] */ DWORD dwID, /* [in] */ IOleInPlaceActiveObject __RPC_FAR* pActiveObject, /* [in] */ IOleCommandTarget __RPC_FAR* pCommandTarget, /* [in] */ IOleInPlaceFrame __RPC_FAR* pFrame, /* [in] */ IOleInPlaceUIWindow __RPC_FAR* pDoc); STDMETHOD(HideUI)(void); STDMETHOD(UpdateUI)(void); STDMETHOD(EnableModeless)(/* [in] */ BOOL fEnable); STDMETHOD(OnDocWindowActivate)(/* [in] */ BOOL fEnable); STDMETHOD(OnFrameWindowActivate)(/* [in] */ BOOL fEnable); STDMETHOD(ResizeBorder) ( /* [in] */ LPCRECT prcBorder, /* [in] */ IOleInPlaceUIWindow __RPC_FAR* pUIWindow, /* [in] */ BOOL fRameWindow); STDMETHOD(TranslateAccelerator) ( /* [in] */ LPMSG lpMsg, /* [in] */ const GUID __RPC_FAR* pguidCmdGroup, /* [in] */ DWORD nCmdID); STDMETHOD(GetOptionKeyPath) ( /* [out] */ LPOLESTR __RPC_FAR* pchKey, /* [in] */ DWORD dw); STDMETHOD(GetDropTarget) ( /* [in] */ IDropTarget __RPC_FAR* pDropTarget, /* [out] */ IDropTarget __RPC_FAR* __RPC_FAR* ppDropTarget); STDMETHOD(GetExternal) ( /* [out] */ IDispatch __RPC_FAR* __RPC_FAR* ppDispatch); STDMETHOD(TranslateUrl) ( /* [in] */ DWORD dwTranslate, /* [in] */ OLECHAR __RPC_FAR* pchURLIn, /* [out] */ OLECHAR __RPC_FAR* __RPC_FAR* ppchURLOut); STDMETHOD(FilterDataObject) ( /* [in] */ IDataObject __RPC_FAR* pDO, /* [out] */ IDataObject __RPC_FAR* __RPC_FAR* ppDORet); END_INTERFACE_PART(DocHostUIHandler) // // for IOleClientSite // BEGIN_INTERFACE_PART(OleClientSite, IOleClientSite) STDMETHOD(SaveObject)(void) { return E_NOTIMPL; } STDMETHOD(GetMoniker) ( /* [in] */ DWORD /*dwAssign*/, /* [in] */ DWORD /*dwWhichMoniker*/, /* [out] */ IMoniker** /*ppmk*/) { return E_NOTIMPL; } STDMETHOD(GetContainer) ( /* [out] */ IOleContainer** /*ppContainer*/) { return E_NOTIMPL; } STDMETHOD(ShowObject)(void) { return E_NOTIMPL; } STDMETHOD(OnShowWindow) ( /* [in] */ BOOL /*fShow*/) { return E_NOTIMPL; } STDMETHOD(RequestNewObjectLayout)(void) { return E_NOTIMPL; } END_INTERFACE_PART(OleClientSite) // // for IDispatch // BEGIN_INTERFACE_PART(Dispatch, IDispatch) STDMETHOD(Invoke) (DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pvarResult, EXCEPINFO* pExcepInfo, UINT* puArgErr); STDMETHOD(GetTypeInfoCount)(unsigned int*); STDMETHOD(GetTypeInfo)(unsigned int, LCID, ITypeInfo**); STDMETHOD(GetIDsOfNames)(REFIID, LPOLESTR*, unsigned int, LCID, DISPID*); END_INTERFACE_PART(Dispatch) // // for IOleCommandTarget // BEGIN_INTERFACE_PART(OleCommandTarget, IOleCommandTarget) STDMETHOD(Exec) ( /* [unique][in] */ const GUID __RPC_FAR* pguidCmdGroup, /* [in] */ DWORD nCmdID, /* [in] */ DWORD nCmdexecopt, /* [unique][in] */ VARIANT __RPC_FAR* pvaIn, /* [unique][out][in] */ VARIANT __RPC_FAR* pvaOut); /*[input_sync]*/ STDMETHOD(QueryStatus)( /* [unique][in] */ const GUID __RPC_FAR* pguidCmdGroup, /* [in] */ ULONG cCmds, /* [out][in][size_is] */ OLECMD __RPC_FAR prgCmds[], /* [unique][out][in] */ OLECMDTEXT __RPC_FAR* pCmdText); END_INTERFACE_PART(OleCommandTarget) DECLARE_INTERFACE_MAP() }; #ifndef _DEBUG // debug version in StylerView.cpp inline CStylerDoc* CStylerView::GetDocument() const { return reinterpret_cast(m_pDocument); } #endif ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line.