关于MFC添加网页的设置

直接上代码靠谱

// CMFCApplication3Dlg 消息处理程序

BOOL CMFCApplication3Dlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != nullptr)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO: 在此添加额外的初始化代码
    GetHtmlView();
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CMFCApplication3Dlg::GetHtmlView()
{
    if (m_pYlsHtmlView != NULL)
        return;
    m_pYlsHtmlView = new CHSHtmlView;
    m_pYlsHtmlView->Create(NULL, NULL, WS_CHILD | WS_VISIBLE,
        CRect(0, 0, 0, 0), this, IDC_TAB, NULL);
    m_pYlsHtmlView->m_pYlsHtmlDlg = this;
    //    m_pYlsHtmlView->m_cNotFocus = 1;
    m_pYlsHtmlView->m_strCurPage = "www.baidu.com";
    m_pYlsHtmlView->OnInitialUpdate();
    //m_pYlsHtmlView->MoveWindow(CRect(0, 0, 0, 0));

    CRect rect;
    this->GetClientRect(rect);
    m_pYlsHtmlView->MoveWindow(rect);
}
class CHSHtmlView : public CHtmlView
{
public:
    CHSHtmlView();           // protected constructor used by dynamic creation
    DECLARE_DYNCREATE(CHSHtmlView)
public:
// Overrides
    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CHSHtmlView)
    public:
    virtual void OnDocumentComplete(LPCTSTR lpszURL);
    virtual void OnInitialUpdate();
    virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL
    void OnDraw(CDC* pDC);
// Implementation
public:
    virtual ~CHSHtmlView();
    // Generated message map functions
    //{{AFX_MSG(CHSHtmlView)
    afx_msg void OnSize(UINT nType, int cx, int cy);
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()
public:
    CDialog* m_wndYlsBrow;
public:
     CDialog* m_pYlsHtmlDlg;
public:
    static CString m_strHtmPage;
    CString m_strCurPage;
};
/
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_YLSHTMLVIEW_H__7761C0CE_28E1_467C_9764_A78A59508B03__INCLUDED_)

 

 

#include "stdafx.h"
#include "HSHtmlView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/
// CHSHtmlView

CString CHSHtmlView::m_strHtmPage;
IMPLEMENT_DYNCREATE(CHSHtmlView, CHtmlView)
CHSHtmlView::CHSHtmlView()
{
    m_wndYlsBrow = NULL;
    m_pYlsHtmlDlg = NULL;
}
CHSHtmlView::~CHSHtmlView()
{
}
void CHSHtmlView::DoDataExchange(CDataExchange* pDX)
{
    CHtmlView::DoDataExchange(pDX);
    //{{AFX_DATA_MAP(CHSHtmlView)
        // NOTE: the ClassWizard will add DDX and DDV calls here
    //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHSHtmlView, CHtmlView)
    //{{AFX_MSG_MAP(CHSHtmlView)
    ON_WM_SIZE()
    ON_WM_CREATE()
END_MESSAGE_MAP()

/
// CHSHtmlView diagnostics
void CHSHtmlView::OnDocumentComplete(LPCTSTR lpszURL) 
{
    CHtmlView::OnDocumentComplete(lpszURL);
    if (m_pYlsHtmlDlg)
        m_pYlsHtmlDlg->SendMessage(HTML_MSG_CLICKURL, HTML_MSG_CLICKURL, HTML_MSG_CLICKURL);
}
void CHSHtmlView::OnInitialUpdate()
{
    SetScrollSizes( MM_TEXT, CSize(0,0), CSize(0,0), CSize(0,0));
    Navigate2(m_strCurPage,NULL,NULL);
}
void CHSHtmlView::OnDraw(CDC* pDC) 
{
}
BOOL CHSHtmlView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, 
    const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
    dwStyle &= ~WS_BORDER;
    // create the view window itself
    m_pCreateContext = pContext;
    if (!CView::Create(lpszClassName, lpszWindowName,dwStyle, rect, pParentWnd,  nID, pContext))
        return FALSE;
    m_wndYlsBrow = new CDialog();
    RECT rectClient;
    GetClientRect(&rectClient);        
    // create the control window
    // AFX_IDW_PANE_FIRST is a safe but arbitrary ID
    if (!m_wndYlsBrow->CreateControl(CLSID_WebBrowser, lpszWindowName,
        WS_VISIBLE | WS_CHILD, rectClient, this, AFX_IDW_PANE_FIRST)){
        DestroyWindow();
        return FALSE;
    }
    LPUNKNOWN lpUnk = m_wndYlsBrow->GetControlUnknown();
    HRESULT hr = lpUnk->QueryInterface(IID_IWebBrowser2, (void**)&m_pBrowserApp);
    if (!SUCCEEDED(hr)) {
        m_pBrowserApp = NULL;
        m_wndYlsBrow->DestroyWindow();
        DestroyWindow();
        return FALSE;
    }
    return TRUE;
}
void CHSHtmlView::OnSize(UINT nType, int cx, int cy) 
{
    CFormView::OnSize(nType, cx, cy);
    if (m_wndYlsBrow && ::IsWindow(m_wndYlsBrow->m_hWnd)){
        // need to push non-client borders out of the client area
        CRect rect;
        GetClientRect(rect);
        ::AdjustWindowRectEx(rect,m_wndYlsBrow->GetStyle(), FALSE, WS_EX_CLIENTEDGE);
        m_wndYlsBrow->SetWindowPos(NULL, rect.left, rect.top,
            rect.Width(), rect.Height(), SWP_NOACTIVATE | SWP_NOZORDER);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值