⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hhctrl.h

📁 采用Vc++开发
💻 H
字号:
// Copyright (C) 1998-1999 KeyWorks Software. 

// This class is designed for embedding a window that displays HTML content. It
// is modeled after the CHtmlView class, but can be used as a control and has
// additional functionality for supporting HTML Help (.CHM and .ITS file
// support). See hhctrl.cpp for more information.

#ifndef __HHCTRL_H__
#define __HHCTRL_H__

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifndef AFX_OLE_TRUE
#define AFX_OLE_TRUE (-1)
#define AFX_OLE_FALSE 0
#endif

#define HHCTRL_BTN_HOME     (1 << 0)    
#define HHCTRL_BTN_BACK     (1 << 1)    
#define HHCTRL_BTN_FORWARD  (1 << 2)    
#define HHCTRL_BTN_PRINT    (1 << 3)   
#define HHCTRL_BTN_CLOSE    (1 << 4)   

// These values will be sent as the WPARAM member of a WM_COMMAND message that
// will be sent to the parent window when a button is clicked.

#define HH_TB_HOME      0xFF00
#define HH_TB_BACK      0xFF01
#define HH_TB_FORWARD   0xFF02
#define HH_TB_PRINT     0xFF03
#define HH_TB_CLOSE     0xFF04

class CHHCtrl : public CWnd
{
public: 

    CHHCtrl();
    ~CHHCtrl();

    virtual bool Create(CWnd* pParent, const RECT& rc, 
                DWORD dwBtns = HHCTRL_BTN_HOME | HHCTRL_BTN_BACK | HHCTRL_BTN_PRINT, 
                LPCTSTR pszHomeURL = NULL, bool fBtnText = true);

    // Use ReplaceControl instead of Create if you are replacing a static or
    // other control with a help window

    virtual bool ReplaceControl(CWnd* pDlg, UINT idCtrl, 
                DWORD dwBtns = HHCTRL_BTN_HOME | HHCTRL_BTN_BACK | HHCTRL_BTN_PRINT, 
                LPCTSTR pszHomeURL = NULL, bool fBtnText = true);

    DECLARE_DYNAMIC(CHHCtrl)
    DECLARE_EVENTSINK_MAP()

public:
    IWebBrowser2* GetBrowser() { return m_pBrowserApp; }
    LPCTSTR GetChmFile() { return (LPCTSTR) m_cszChm; }
    bool    SetChmFile(LPCTSTR pszChm); // returns false if CHM file cannot be found
    bool    FindChmFile(LPCTSTR pszFile, LPTSTR pszDst);    // automatically called by SetChmFile()
    void    SetHomeFile(LPCTSTR pszUrl) { m_cszHome = pszUrl; }

    void    MoveWindow(CRect* prc, BOOL fRepaint);
                
    CString GetType() const;
    long GetLeft() const;
    void SetLeft(long nNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Left(nNewValue); }
    long GetTop() const;
    void SetTop(long nNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Top(nNewValue); }
    long GetHeight() const;
    void SetHeight(long nNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Height(nNewValue); }
    BOOL GetVisible() const;
    void SetVisible(bool fNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Visible((short) (fNewValue ? AFX_OLE_TRUE : AFX_OLE_FALSE)); }
    CString GetLocationName() const;
    READYSTATE GetReadyState() const;
    BOOL GetOffline() const;
    void SetOffline(bool fNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Offline((short) (fNewValue ? AFX_OLE_TRUE : AFX_OLE_FALSE)); }
    BOOL GetSilent() const;
    void SetSilent(bool fNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_Silent((short) (fNewValue ? AFX_OLE_TRUE : AFX_OLE_FALSE)); }
    BOOL GetTopLevelContainer() const;
    CString GetLocationURL() const;
    BOOL GetBusy() const;
    LPDISPATCH GetApplication() const;
    LPDISPATCH GetParentBrowser() const;
    LPDISPATCH GetContainer() const;
    LPDISPATCH GetHtmlDocument() const;
    CString GetFullName() const;
    OLECMDF QueryStatusWB(OLECMDID cmdID) const;
    BOOL GetRegisterAsDropTarget() const;
    void SetRegisterAsDropTarget(bool fNewValue) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->put_RegisterAsDropTarget((short) (fNewValue ? AFX_OLE_TRUE : AFX_OLE_FALSE)); }

    void GoBack() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->GoBack(); }
    void GoForward() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->GoForward(); }
    void GoHome() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->GoHome(); }
    void GoSearch() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->GoSearch(); }
    void Refresh() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->Refresh(); }
    void Refresh2(int nLevel) { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->Refresh2(COleVariant((long) nLevel, VT_I4)); }
    void Stop() { ASSERT(m_pBrowserApp != NULL); m_pBrowserApp->Stop(); }

    BOOL GetProperty(LPCTSTR lpszProperty, CString& strValue);
    COleVariant GetProperty(LPCTSTR lpszProperty);
    void PutProperty(LPCTSTR lpszProperty, const VARIANT& vtValue);
    void PutProperty(LPCTSTR lpszPropertyName, long lValue) { ASSERT(m_pBrowserApp != NULL); ASSERT(m_pBrowserApp != NULL); PutProperty(lpszPropertyName, COleVariant(lValue, VT_I4)); }
    void PutProperty(LPCTSTR lpszPropertyName, short nValue) { ASSERT(m_pBrowserApp != NULL); ASSERT(m_pBrowserApp != NULL); PutProperty(lpszPropertyName, COleVariant(nValue, VT_I2)); }
    void PutProperty(LPCTSTR lpszPropertyName, LPCTSTR lpszValue) { ASSERT(m_pBrowserApp != NULL); ASSERT(m_pBrowserApp != NULL); PutProperty(lpszPropertyName, COleVariant(lpszValue, VT_BSTR)); }
    void PutProperty(LPCTSTR lpszPropertyName, double dValue) { ASSERT(m_pBrowserApp != NULL); ASSERT(m_pBrowserApp != NULL); PutProperty(lpszPropertyName, COleVariant(dValue)); }

    HRESULT Navigate(LPCTSTR URL, DWORD dwFlags = 0,
                  LPCTSTR lpszTargetFrameName = NULL,
                  LPCTSTR lpszHeaders = NULL, LPVOID lpvPostData = NULL,
                  DWORD dwPostDataLen = 0);
    void Navigate2(LPITEMIDLIST pIDL, DWORD dwFlags = 0,
                   LPCTSTR lpszTargetFrameName = NULL);
    void Navigate2(LPCTSTR lpszURL, DWORD dwFlags = 0,
                   LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeaders = NULL,
                   LPVOID lpvPostData = NULL, DWORD dwPostDataLen = 0);
    void Navigate2(LPCTSTR lpszURL, DWORD dwFlags,
                   CByteArray& baPostedData,
                   LPCTSTR lpszTargetFrameName = NULL, LPCTSTR lpszHeader = NULL);
    HRESULT NavigateChm(LPCTSTR URL, LPCTSTR lpszTargetFrameName = NULL);
    HRESULT NavigateChm(UINT mapID, LPCTSTR lpszTargetFrameName = NULL);

    void ExecWB(OLECMDID cmdID, OLECMDEXECOPT cmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut);

// Miscellanious

    LPTSTR StrChr(LPCTSTR psz, TCHAR ch);   // DBCS-enabled character search
    LPTSTR StrRChr(LPCTSTR psz, TCHAR ch);  // DBCS-enabled character search
    void   AddTrailingBackslash(LPTSTR psz);
    void   GetRegWindowsDirectory(TCHAR* pszDst);
    CToolBarCtrl* GetToolBarCtrl() { return m_pTB; }

    virtual void OnDraw(CDC* pDC) {
        UNUSED_ALWAYS(pDC);    
        // this class should never do its own drawing;
        // the browser control should handle everything

        ASSERT(FALSE);  // make certain we aren't called
    }

    // Events
    virtual void OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags,
                                   LPCTSTR lpszTargetFrameName, 
                                   CByteArray& baPostedData,
                                   LPCTSTR lpszHeaders, BOOL* pfCancel);
    virtual void OnNavigateComplete2(LPCTSTR strURL);
    virtual void OnDownloadBegin();
    virtual void OnDownloadComplete();
    virtual void OnDocumentComplete(LPCTSTR lpszURL);
    virtual void OnProgressChange(long nProgress, long nProgressMax);
    virtual void OnStatusTextChange(LPCTSTR lpszText);
    virtual void OnTitleChange(LPCTSTR lpszText);
    virtual void OnCommandStateChange(long nCommand, BOOL fEnable);
    virtual void OnPropertyChange(LPCTSTR lpszProperty);
    virtual void OnNewWindow2(LPDISPATCH* ppDisp, BOOL* Cancel);
    virtual void OnQuit();
    virtual void OnVisible(BOOL fVisible);
    virtual void OnCommand(DWORD cmd);

public:
#ifdef _DEBUG
    virtual void AssertValid() const;
    virtual void Dump(CDumpContext& dc) const;
#endif

// Event reflectors (not normally overridden)
protected:
    virtual void NavigateComplete2(LPDISPATCH pDisp, VARIANT* URL);
    virtual void BeforeNavigate2(LPDISPATCH pDisp, VARIANT* URL,
                                 VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData,
                                 VARIANT* Headers,   BOOL* Cancel);
    virtual void DocumentComplete(LPDISPATCH pDisp, VARIANT* URL);

public:     // public so that host can call OnFilePrint
    //{{AFX_MSG(CHHCtrl)
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnPaint();
    afx_msg void OnDestroy();
    afx_msg void OnFilePrint();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()

protected:
    IWebBrowser2* m_pBrowserApp;
    CString m_cszChm;   // stores the location of the CHM file if any

    typedef struct {
        DWORD mapid;
        DWORD offset;   
    } MAPID;

    MAPID*  m_paMapIds;
    int     m_cMapIds;
    int     m_idLastButton;

    CString     m_cszHome;
    int         m_mapHome;
    CImageList* m_pimg;
    CImageList* m_pimgHot;
    CToolBarCtrl*  m_pTB;
};

#endif // __HHCTRL_H__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -