HTML 로딩 : WebBrowser 컨트롤을 이용과 모니커를 이용
첫번쩨 웹브라우저 컨트롤 이용
hIEWnd = GetDlgItem(hDlg, IDC_EXPLORER1);
if(S_OK == AtlAxGetControl(hIEWnd, &pUnk)){
if(S_OK == pUnk->QueryInterface(IID_IWebBrowser2, (void**)&pWeb)){
CComVariant varEmpty, varUrl("http://www.naver.com");
pWeb->Navigate2(&varUrl, &varEmpty, &varEmpty, &varEmpty, &varEmpty);
}
pUnk->Release();
}
두번째 모니커 이용
{
IDispatch * pDisp=NULL;
if(S_OK == pWeb->get_Document(&pDisp) && pDisp){
IHTMLDocument2* pDoc=NULL;
if(S_OK == pDisp->QueryInterface(IID_IHTMLDocument2, (void**)&pDoc)){
IMoniker* pMoniker=NULL;
if(S_OK == CreateURLMoniker(NULL, L"http://www.yahoo.com", &pMoniker) && pMoniker){
IBindCtx* pbc=NULL;
if(S_OK == CreateBindCtx(NULL, &pbc) && pbc){
IPersistMoniker* pPersistMoniker=NULL;
if(S_OK == pDoc->QueryInterface(IID_IPersistMoniker, (void**)&pPersistMoniker) && pPersistMoniker){
pPersistMoniker->Load(FALSE, pMoniker, pbc, STGM_READ);
pPersistMoniker->Release();
}
pbc->Release();
}
pMoniker->Release();
}
pDoc->Release();
}
pDisp->Release();
}
}
두번째의 경우는 백그라운드 작업을 하고 싶을때 사용하면 좋을 듯하다.
단순히 HTML 문서 수정이나 파싱만 필요한 경우,,,
번거롭게 웹브라우져 컨트롤을 로딩해서 사용자 화면에 띄울 필요가 없다.
참고로 아래와 같이 다큐먼트 객체만 따로 생성할 수 있다.
CoCreateInstance(CLSID_HTMLDocument, NULL,
CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, (LPVOID*)&pDoc);