http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=51&MAEULNO=20&no=8491


목적: WebBrowser2라는 ActiveX 컨트롤을 사용해서 화면에 HTML 형식의 내용을 출력하려고 합니다.

 

 

 

1. ActiveX 컨트롤 추가

 

    활성 프로젝트에서 오른쪽 클릭 -> 추가 -> 클래스 -> ActiveX 컨트롤

    

    

 

 

2. WebBrowser2 컨트롤 추가

 

    Microsoft Web Browser -> IWebBrowser2를 추가하여 코드 생성

    

    

 

 

3. HTML 태그가 담긴 문자열을 쉽게 출력할 수 있도록 상속받은 확장 클래스 작성

 

    WebBrowser2.h를 열고 다음 클래스를 추가

[-] Collapse

#include <MsHTML.h>

//////////////////////////////////////////////////////////////////////////
// CWebBrowser2Ex

class CWebBrowser2Ex : public CWebBrowser2
{
public:
    void AboutBlank(void)
    {
        CComVariant spVar(_T("about:blank"));
        CWebBrowser2::Navigate2(&spVar, 0, 0, 0, 0);
    }

    BOOL WriteHtmlString(const CString& strHTML)
    {
        CComPtr<IDispatch> pDispDoc;
        pDispDoc = CWebBrowser2::get_Document();
        CComQIPtr<IHTMLDocument2> spDoc(pDispDoc);

        VARIANT *param;
        CComBSTR spbStrHtmlText(strHTML);
        SAFEARRAY * psfArray = SafeArrayCreateVector(VT_VARIANT, 0, 1);
        SafeArrayAccessData(psfArray,(LPVOID*) & param);
        param->vt = VT_BSTR;
        param->bstrVal = spbStrHtmlText;
        SafeArrayUnaccessData(psfArray);
        spDoc->write(psfArray);
        SafeArrayDestroy(psfArray);

        return TRUE;
    }
};

 

4. 사용

 

    컨트롤을 적당히 생성해서 화면에 출력

[-] Collapse

    // 포함
    #include "WebBrowser2.h"

    // 선언
    CWebBrowser2Ex m_webOutput;

    // 컨트롤 생성
    // 적당히 알맞은 위치에 생성합니다.
    if ( !m_webOutput.Create(NULL, NULL, WS_VISIBLE
        , CRect(10,10,560,320), this, NULL) )
    {
        TRACE("failed to create browser\n");
    }

    // 출력할 내용
    CString strHTML(
        _T("<center><h1>HTML</h1><h3>Formatted Text</h3></center>")
        _T("<hr/><p>")

        _T("HTML 형식의 문자열을 화면에 출력해 봅시다!!<br/>")
    );

    // 빈 페이지로 초기화
    m_webOutput.AboutBlank();

    // 문자열을 출력
    m_webOutput.WriteHtmlString(strHTML);

    // Navigate2 메소드를 사용해서 웹페이지를 직접 보이는 것도 가능합니다.
    CComVariant spVar(_T("http:http://www.devpia.com/"));
    m_webOutput.Navigate2(&spVar, 0, 0, 0, 0);

 

5. 출력 결과