ActiveX/Web Browser Pointer얻기
|
ActiveX/컨트롤 그리기 최적화 › ActiveX/컨트롤설정 › ActiveX/컨트롤설정비교 › ActiveX/표시되었을 때 활성화 옵션 해제 › ActiveX/IObjectSafety인터페이스구현 › ActiveX/WebBrowserPointer얻기 ActiveX에서 호출한 웹 브라우저의 포인터 얻기
IWebBrowser2* CxCtrl::GetWebPointer()
{
HRESULT hr;
IOleContainer* pIContainer;
IWebBrowser2* pIWeb;
IServiceProvider *pISP;
// get IOleClientSite interface pointer.
LPOLECLIENTSITE pIClientSite = GetClientSite();
// get IOleContainer interface poineter.
hr = pIClientSite->GetContainer(&pIContainer);
if( hr != S_OK )
{
pIClientSite->Release();
return NULL;
}
// get IServiceProvider interface pointer.
hr = pIClientSite->QueryInterface( IID_IServiceProvider, (void **)&pISP );
if( hr != S_OK )
{
pIContainer->Release();
pIClientSite->Release();// access violation when terminated.
return NULL;
}
// get IWebBrowser2 interface pointer.
hr = pISP->QueryService( IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&pIWeb );
if( hr != S_OK )
{
pIContainer->Release();
pIClientSite->Release();
pISP->Release();
return NULL;
}
// release interface.
pIContainer->Release();
pIClientSite->Release();
pISP->Release();
return pIWeb ;
}
void CxCtrl::OnTest()
{
IWebBrowser2* pIWeb = GetWebPointer();
if( pIWeb ){
BSTR bstrURL = NULL
CString strURL;
pIWeb->get_LocationURL( &bstrURL );
if( bstrURL != NULL )
if( bstrURL != NULL )
{
::WideCharToMultiByte( CP_ACP,
0,
bstrURL,
-1,
strURL.GetBuffer( MAX_PATH ),
MAX_PATH,
NULL, NULL );
::SysFreeString( bstrURL );
strURL.ReleaseBuffer();
}
}
if( pIWeb ) pIWeb->Release();
}
|
- 전 이런 놈입니다.
격언> 마음을 수양하는 데 욕망을 줄이는 것보다 더 좋은 것은 없다. (맹자)
Recent Changes Echoes Of War(The... @ 2012-05-18 [03:44 pm] by windlesszone Diablo3 @ 2012-05-15 [04:49 pm] by windlesszone Diablo3/story/wizard @ 2012-05-15 [04:48 pm] by windlesszone 4 changes Diablo3/story/wit... @ 2012-05-15 [04:16 pm] by windlesszone Diablo3/story/monk @ 2012-05-15 [04:14 pm] by windlesszone
|
