반디카메라에 웹페이지 캡처 기능을 추가하기 위해서 프로그램에서 IWebBrowser2 인터페이스를 이용해서 웹페이지를 띄우고, IViewObject 를 이용해서 DC 로 웹페이지를 랜더링 한 후 이미지를 저장하도록 만들었다.

CComPtr<IViewObject> pView;
if(FAILED(pDoc->QueryInterface(IID_IViewObject, (void**)&pView)))
{ASSERT(0); return FALSE;}
....
hr = pView->Draw(DVASPECT_CONTENT, 1, NULL, NULL, hScreenDC, hDC, &rectSrc , NULL, NULL, 0);

 
그런데 스크롤바와 3D 테두리가 같이 캡처가 되는 문제가 발생하여서 이 문제를 해결하기 위해서 구글링을 해보니..



등이 나왔다. 여기서 제시하는 방법은 

   pBodyElement->put_scroll(CComBSTR("no"));

과 같이 스크롤 속성을 없애주는 것인데 어떤 시점에서 이걸 호출해야 하는지 모르겠지만 어찌되었건 잘 작동하지 않았다.

그래서 더 찾아보니 IDocHostUIHandler::GetHostInfo  를 이용하면 된다고 하여 찾아보니.... 사용 방법이 만만치 않더라... 어디선가 atlbrowser 예제를 보면 된다고 해서 atlbrowser 예제를 찾아봤는디... 예제도 잘 안나오고... 좌우지간 어찌 어찌 해서 찾은 atlbrowser 예제 ( http://blog.kippler.com/63 ) 

예제를 보고 

STDMETHOD(GetHostInfo)(DOCHOSTUIINFO FAR *pInfo)
{
pInfo->cbSize  = sizeof(DOCHOSTUIINFO);
pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER | DOCHOSTUIFLAG_SCROLL_NO;
}

이렇게 하니까 잘 해결되었다. 

다만 네이버, 다음의 메인 페이지의 스크롤바는 사라지지 않는다... 원인은 불명.



Posted by 키플러
,