웹, HTML

IWebBrowser2 를 이용해서 웹브라우저 원하는 위치에 띄우기 Tools와 Tips

디버그정 2008. 8. 14. 16:32
BOOL OpenNewWindowEx(LPCTSTR pAddress, BOOL bMenu, BOOL bToolBar,
         BOOL bAddressBar, BOOL bStatusBar, BOOL bResize,
         int x, int y, int cx, int cy)
{
 CoInitialize(NULL);
 IWebBrowser2 *pWebBrowser;
 HRESULT hr;
 
 // 웹브라우저 객체를 생성한다.
 hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
  IID_IWebBrowser2, (void**)&pWebBrowser);
 if(FAILED(hr) || pWebBrowser == NULL) return FALSE;
 
 // 메뉴바를 출력할지 설정한다
 pWebBrowser->put_MenuBar(bMenu ? VARIANT_TRUE : VARIANT_FALSE);
 // 툴바를 출력할지 설정한다
 pWebBrowser->put_ToolBar(bToolBar ? VARIANT_TRUE : VARIANT_FALSE);
 // 주소창을 출력할지 설정한다
 pWebBrowser->put_AddressBar(bAddressBar ? VARIANT_TRUE : VARIANT_FALSE);
 // 상태바를 출력할지 설정한다
 pWebBrowser->put_StatusBar(bStatusBar ? VARIANT_TRUE : VARIANT_FALSE);
 // 크기 조절을 가능하게 할지 설정한다
 pWebBrowser->put_Resizable(bResize ? VARIANT_TRUE : VARIANT_FALSE);
 
 // 웹브라우저의 위치와 크기를 설정한다
 if(x >= 0) pWebBrowser->put_Left(x);
 if(y >= 0) pWebBrowser->put_Top(y);
 if(cx >= 0) pWebBrowser->put_Width(cx);
 if(cy >= 0) pWebBrowser->put_Height(cy);
 
 CString strAddress = pAddress;
 
 // Navigate()에 필요한 인자들을 초기화한다
 VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
 ::VariantInit(&vtFlags);
 ::VariantInit(&vtTarget);
 ::VariantInit(&vtPostData);
 ::VariantInit(&vtHeader);
 
 // 웹브라우저를 화면에 보이게 한다
 pWebBrowser->put_Visible(VARIANT_TRUE);
 // 사이트를 연다
 hr = pWebBrowser->Navigate(strAddress.AllocSysString(), &vtFlags, &vtTarget,
  &vtPostData, &vtHeader);
 if(FAILED(hr)) return FALSE;
 
 // 웹브라우저 인터페이스의 참조 횟수를 줄인다
 pWebBrowser->Release();
 CoUninitialize();
 
 return SUCCEEDED(hr);
}