刚才在项目里看到一个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 //错误处理
时间: 2024-11-06 03:36:40