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 );
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
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 );