美文网首页
webbrowser导航完毕设置焦点

webbrowser导航完毕设置焦点

作者: 晓函 | 来源:发表于2017-02-12 21:18 被阅读157次

    自己软件内页加了一个webbrowser,但是每次在外面输入网页地址后,鼠标移动到webbrowser内总是不能直接使用滚轮,一定要点一下页面,让页面获取焦点,才能使用滚轮滚动网页。
    于是自己在写了一个函数,然后再NavigateComplete2调用,这样每次在地址栏输入URL后,webbrowser导航完毕后就自动设焦点了,鼠标移动过去就能滚动网页了,用户体验好了许多。

    
    //Com操作
    #include "Mshtml.h"
    #include "atlcomcli.h"
    
    /// 设置网页为焦点, 使鼠标滚动时, 可以让网页元素进行滚动  ,不需要提前用鼠标点击。
    /// 相当于当网页打开后,先用鼠标在网页中空白处点击一下,再用鼠标滚轮滚动网页
    void CPanelWebHomeUI::SetPageFocus(){
    
        //使用CComQIPtr智能指针,它们在销毁的时候,不需要手动去Replease释放接口指针,
        //在赋值的时候,也不需要手动的AddRef,
        //在出现异常的时候,会自动处理异常,而不需要额外的异常处理代码。
        //但是记住:重复赋值的时候,需要提前手动Replease释放
        CComQIPtr<IWebBrowser2> pWebBrowser2;
        CComQIPtr<IDispatch> pDocDisp;
        CComQIPtr<IHTMLDocument4> pHtmlDoc4;
    
    
        VARIANT var;
        HRESULT hr = S_FALSE;
    
    
        //用COM接口来设置元素
        pWebBrowser2 = m_pBrowser->GetWebBrowser2();
        if (!pWebBrowser2)
            return;
    
    
        hr = pWebBrowser2->get_Document(&pDocDisp);
        if (FAILED(hr) || NULL == pDocDisp)
            return;
    
    
        hr = pDocDisp->QueryInterface(IID_IHTMLDocument4, (void**)&pHtmlDoc4);
        if (FAILED(hr) || NULL == pHtmlDoc4)
            return;
    
        //设置焦点
        pHtmlDoc4->focus();
    
    }
    
    

    相关文章

      网友评论

          本文标题:webbrowser导航完毕设置焦点

          本文链接:https://www.haomeiwen.com/subject/apzaittx.html