BLOG ARTICLE 2005/06/17 | 1 ARTICLE FOUND

  1. 2005.06.17 [.NET2003] CDialog에 HTML컨트롤 붙이기 1

1. 새창으로 띄우기

void CHyperLink::OnClicked()
{
CoInitialize(NULL);

static IWebBrowser2 *pWebBrowser = NULL; // IWebBrowser2 인터페이스를 사용

if(pWebBrowser != NULL) // pWebBrowser 초기화
{
pWebBrowser->Quit();
pWebBrowser->Release();
pWebBrowser = NULL;
}

CString strHeader, strTarget, strUrl;
strHeader = "Content-Type: application/x-www-form-urlencoded\r\n";
strTarget = "_top"; // 새로운 창으로 띄움
strUrl = m_strURL; // 인터넷 주소

VARIANT vtHeader, vtTarget, vtEmpty;
vtHeader.vt = VT_BSTR;
vtHeader.bstrVal = strHeader.AllocSysString();
vtTarget.vt = VT_BSTR;
vtTarget.bstrVal = strTarget.AllocSysString();

::VariantInit(&vtEmpty); // Variant 초기화
::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowser);

int nCX = GetSystemMetrics(SM_CXSCREEN)+300;
int nCY = GetSystemMetrics(SM_CYSCREEN)-150;

pWebBrowser->put_Top((nCY - m_iSizeHeight)/2); // 창을 가운데 정렬
pWebBrowser->put_Left((nCX - m_iSizeWidth)/2);
pWebBrowser->put_Height(m_iSizeHeight); // 창의 크기
pWebBrowser->put_Width(m_iSizeWidth);
pWebBrowser->put_Resizable(VARIANT_FALSE); // 각 설정
pWebBrowser->put_ToolBar(VARIANT_FALSE);
pWebBrowser->put_StatusBar(VARIANT_FALSE);
pWebBrowser->put_AddressBar(VARIANT_FALSE);
pWebBrowser->put_MenuBar(VARIANT_FALSE);
pWebBrowser->put_Visible(VARIANT_TRUE);

HRESULT result;

result = pWebBrowser->Navigate(strUrl.AllocSysString(), &vtEmpty, &vtTarget, &vtEmpty, &vtHeader);

CoUninitialize();

if( SUCCEEDED(result) )
SetVisited(); // 제대로 갔다면 링크를 방문한 색깔로 바꿈
else { // 오류시 메시지
CString msg="HyperLink Error";

if(result==E_INVALIDARG) msg+=": Invalid Parameters.";
else if(result==E_OUTOFMEMORY) msg+=": Out of memory.";

MessageBeep(MB_ICONEXCLAMATION); // Unable to follow link
AfxMessageBox(msg, MB_ICONEXCLAMATION | MB_OK);
}
}

출처 : 데브피아 슈퍼사이야인(walter_an)님의 글

2. 기존 다이알로그에 붙이기

AfxEnableControlContainer(); // 초기화

CWnd wndBrowser;
CComQIPtr spBrowser;

CString strUrl = "http://www.AJJIYA.com";

wndBrowser.CreateControl( CLSID_WebBrowser, NULL , WS_VISIBLE | WS_CHILD, CRect(0,0,800,600), this , NULL );
spBrowser = wndBrowser.GetControlUnknown();
spBrowser->Navigate( strUrl.AllocSysString() , NULL , NULL , NULL , NULL );
AND