MFC 浏览器 去除滚动条

用MFC写一个浏览器,我现在知道的方法有:
1.在Dialog上面添加一个WebBrowser ActiveX控件,这个方法我在上一个文章上面的有说,这个方法做出来的浏览器窗口有滚动条,且,我不知道怎么把它给搞掉--!
2.创建基于CDHtmlDialog的工程,这个方法我在上一个文章上面的也有说,这种方法做出来的浏览器窗口直接就没有滚动条了,可是它是基于Dialog资源做的,不符合要求
3.使用CHtmlView方式来做,关于这个,请参考这个文章:http://www.vckbase.com/document/viewdoc/?id=566

把我实现的过程大概的说一下:
1.先建立一个基于Dialog的窗口(基类不是CDHtmlDialog,而是CDialog),然后再添加一个StaticText(不一定非要是这个控件,其它控件也行的)的控件在Dialog上面.
2.创建一个类,父类是CHtmlView.  
  class CMyHtmlView : public CHtmlView {...}
3.实际上CHtmlView这个类的内部就是使用WebBrowser ActiveX来实现浏览器的(我上面的说的第一种方式的封装体)
4.添加方法:

//
// 根据Dialog上面的控件来创建一个显示浏览器的窗口
//
BOOL CMyHtmlView::CreateFromStatic(UINT nID, CWnd* pParent)
{
    CStatic wndStatic;
    if (!wndStatic.SubclassDlgItem(nID, pParent))
    {
        return FALSE;
    }

    CRect rc;
    wndStatic.GetWindowRect(&rc);
    pParent->ScreenToClient(&rc);
    wndStatic.DestroyWindow();

    return Create(NULL, NULL, (WS_CHILD|WS_VISIBLE), rc, pParent, nID, NULL);
}

//
// 重写这个函数就是去掉滚动条
//
HRESULT CMyHtmlView::OnGetHostInfo(DOCHOSTUIINFO *pInfo)
{
    if(pInfo != NULL)   
    {
        pInfo->dwFlags = DOCHOSTUIFLAG_SCROLL_NO;  
    }
    return S_OK;
}

int CMyHtmlView::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
{
    return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
}

void CMyHtmlView::OnDestroy()
{
    if (this->m_pBrowserApp)
    {
        m_pBrowserApp = NULL;
    }
    CWnd::OnDestroy();
}

//
// 不覆盖这个函数,退出时会有堆损坏的现像
// 不要添加任何代码
void CMyHtmlView::PostNcDestroy()
{

}

5.然后在Dialog的OnInitDialog()方法中添加:

BOOL CExplorerDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

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

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

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        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: 在此添加额外的初始化代码

    // CMyHtmlView m_explorer;

    m_explorer.CreateFromStatic(IDC_STATIC, this)
    m_explorer.Navigate("www.baidu.com",0,0,0,0,0);

    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

运行一下看看,滚动条没了!^_^

猜你喜欢

转载自blog.csdn.net/p312011150/article/details/82909775
今日推荐