IWebBrowser隐藏滚动条

 

刚才在项目里看到一个IWebBrowser2,竟然需要通过MoveWindow的方式把滚动条遮挡,如果要缩小IWebBrowser2控件的显示大小呢?这种方法至少我用不习惯,起码也得从源头解决这样的问题吧!

所以百度之,谷歌之~

我的项目使用的是WTL/ATL,所以用WTL/ATL的方式写了一个隐藏滚动条的实现、勿喷~~~

IWebBrowser2的定义和初始化,我就不用说了,这里直接在NavigateComplete里写的,

 1 /*

 2 * CComPtr<IWebBrowser2> m_spWebBrowser;

 3 */

 4 

 5 

 6 /*

 7 * function: onNavigateComplete

 8 * param1: IDispacth *pDisp(LPDISPATCH)

 9 * param2: VARIANT *URL

10 * SINK_ENTRY(DIID_DWebBrowserEvents2, DISPID_NAVIGATECOMPLETE2, OnNavigateComplete)

11 */

12 if (pDisp == m_spWebBrowser && URL != NULL)

13     {

14         CComQIPtr<IHTMLDocument2> spHTMLDocument;

15         CComPtr<IDispatch> spDispDoc;

16         HRESULT hr = m_spWebBrowser->get_Document(&spDispDoc);

17         if (FAILED(hr) || !spDispDoc)

18         {

19             goto end;

20         }

21         hr = spDispDoc->QueryInterface(&spHTMLDocument);

22         if (FAILED(hr) || !spHTMLDocument)

23         {

24             goto end;

25         }

26         CComQIPtr<IHTMLElement> spElement;

27         CComQIPtr<IHTMLBodyElement> spBodyElement;

28         

29         if(SUCCEEDED(spHTMLDocument->get_body(&spElement)))

30         {

31             if (SUCCEEDED(spElement->QueryInterface(IID_IHTMLBodyElement, (void **)&spBodyElement)))

32             {

33                 spBodyElement->put_scroll(L"no");

34             }

35             CComQIPtr<IHTMLStyle> spHTMLStyle;

36             spElement->get_style(&spHTMLStyle);

37             if (spHTMLStyle != NULL)

38             {

39                 spHTMLStyle->put_overflow(L"hidden");

40                 spHTMLStyle->put_border(L"none");

41                 //spHTMLStyle->Release();

42             }

43             //spElement->Release();

44         }

45     }

46 end:

47     //错误处理

 

你可能感兴趣的:(WebBrowser)