DirTy™의 하루일과/DirTy™의 가당찮은MFC

[MFC] CWebBrowser2 스크롤바 없애기

DirTy™ 2014. 8. 22. 17:08

스크롤바 없애기를 계속 실패해서 다이얼로그를 하나 더붙혀서 그영역만 보이게 하는 꼼수를 써서 프로그램을 만들었었는데 쉽게 할수있는 방법이 있었다.

 

코드는 아래와같다...

 

일단 아래 include!!!
#include <mshtml.h>
#include <ATLBASE.H>

 

CWebBrowser2 컨트롤을  m_Web 이라고 하고

아래와같은 코드를 

void OnDocumentCompleteWeb(LPDISPATCH pDisp, VARIANT FAR* URL) 에 추가하면 된다.

 HRESULT hr;
 IHTMLDocument2* m_pHTMLDocument2 = 0;

 LPDISPATCH lpDispatch = m_Web.GetDocument();
 if (lpDispatch)
 {
  hr = lpDispatch->QueryInterface(IID_IHTMLDocument2, (LPVOID*)&m_pHTMLDocument2);
  lpDispatch->Release();

  if (hr == S_OK)
  {
   IHTMLElement *pIElement;
   hr = m_pHTMLDocument2->get_body (&pIElement);
   if(!SUCCEEDED(hr))
    return;

   IHTMLBodyElement *pIBodyElement;
   hr = pIElement->QueryInterface (IID_IHTMLBodyElement, (void**)&pIBodyElement);
   if(!SUCCEEDED(hr))
    return;

   BSTR bstr,bstr1;

   CString strScroll = "no";
   CString strOverflow = "hidden";

   bstr = strScroll.AllocSysString();
   bstr1 = strOverflow.AllocSysString();
   if(SUCCEEDED(hr) && pIBodyElement)
   {
    pIBodyElement->put_scroll (bstr);

    CComPtr <IHTMLStyle> pStyle;
    COleVariant var ((long) 0, VT_I4);
    if(SUCCEEDED (pIElement-> get_style (&pStyle)) )
    {
     pStyle-> put_marginTop (var);
     pStyle-> put_marginLeft (var);
     pStyle-> put_marginRight (var);
     pStyle-> put_marginBottom (var);
     pStyle-> put_overflow (bstr1);
    }
   }

   SysFreeString(bstr);
   SysFreeString(bstr1);
  }

  m_pHTMLDocument2->Release();
  m_pHTMLDocument2 = NULL;
 }