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. 출력 결과
| |
'C++' 카테고리의 다른 글
HTML 형식의 문자열 출력하기 (0) | 2013.02.25 |
---|---|
PDH 프로세스별 CPU 사용률 (0) | 2013.02.25 |
winpcap 수동 설치 (0) | 2013.02.21 |
visual studio 2005 에 windows sdk 설치 (v7.1 : Microsoft Windows SDK for Windows 7 and .NET Framework 4) (0) | 2013.02.18 |
CRT invalid parameter 때문에 덤프 안남는 경우 (0) | 2013.02.08 |
AdPlus를 이용한 디버깅 (0) | 2013.02.07 |
[펌] Debugging Tips (1) - .map 파일과 .cod 파일 분석하기 (0) | 2013.02.07 |
zlib 1.2.7 vs 2005 컴파일 (0) | 2012.11.22 |