zoukankan      html  css  js  c++  java
  • 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
    }
    运行一下看看,滚动条没了!^_^
  • 相关阅读:
    memcached全面剖析
    Zabbix中文使用手册
    lombok
    guava cache
    linux 文件检索操作
    mysql慢查询
    碎片脚本注解(后续整理)
    Docker 目录挂载详述
    jenkins 添加 sonraqube java&vue项目记录
    Ansible unarchive模块
  • 原文地址:https://www.cnblogs.com/emyueguang/p/2056503.html
Copyright © 2011-2022 走看看