HTML 컨트롤을 선택하여 기본적으로 제공되는 소스를 수정한 DHTML컨트롤.

기존의 IDHTCtrlUI을 삭제(이때, 컴파일 에러는 전부 주석처리)하고 외부로 노출될 UIObj Object를 추가했다.(ATL Object Wizard)

IDHTCtrl 인터페이스 생성부분에서 아래와 같이 수정 및 멤버변수를 추가했다.

// 웹 브라우저 생성, 인터페이스 교환
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
        CAxWindow wnd(m_hWnd);

        // 1. Web Browser 컨트롤 생성
        HRESULT        hr        =        wnd.CreateControl(IDH_DHTCTRL);
        if(SUCCEEDED(hr)) {
                hr        =        CComObject<CUIObj>::CreateInstance(&m_pUI);
                if(SUCCEEDED(hr)) {

                        // 2. Web Browser에게 연동되는 UIDisp 전달
                        CComQIPtr<IDispatch> pDisp(m_pUI);
                        hr        =        wnd.SetExternalDispatch(pDisp);
                }
                if(SUCCEEDED(hr)) {

                        // 3. Web Browser가 노출하고 있는 Interface 포인터 획득
                        hr        =        wnd.QueryControl(IID_IWebBrowser2, (void**)&m_spBrowser);

                        // 4. Web Browser와 실제 연동할 m_pUI인터페이스에게 Web Interface 전달
                        m_pUI->put_Web(m_spBrowser);
                }
        }
        return SUCCEEDED(hr)?0:-1;
}

CComObject<CUIObj>                *m_pUI;

//////////////////////////////////////////////////////////////////////////////

IUIObj 인터페이스에 Web property를 추가.

STDMETHODIMP CUIObj::get_Web(IUnknown **pVal)
{
        m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL);
        return S_OK;
}

STDMETHODIMP CUIObj::put_Web(IUnknown *newVal)
{
        m_spBrowser        =        (IWebBrowser2*)newVal;
        return S_OK;
}

GoToURL()이란 메소드도 추가하여 메소드 안에서 m_spBrowser->Navigate(m_urlPath,NULL,NULL,NULL,NULL)을 호출.

멤버변수
CComPtr<IWebBrowser2>        m_spBrowser;        //IDHCtrl 에서 전달되는 인터페이스 저장
CComBSTR                m_urlPath;                //URL 저장공간

OnClick()메소드도 옮겨오기....소스복사, IDL수정....뭐 대충 이정도밖에 기억안나네ㅡ.,ㅡ