如何在chtmlview 中加入INewWindowManager接口,来监视showmodeldialog弹出的窗口程序? 好像没有这方面的文档,请指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重载CreateControlSite,返回一个实现了INewWindowManager的对象 .h文件加入如下 代码//INewWindowManagerBEGIN_INTERFACE_PART(HTMLWindow2 , IHTMLWindow2) INIT_INTERFACE_PART(CDocHostSite, HTMLWindow2 ) STDMETHOD(showModalDialog)( LPCWSTR pszUrl, LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags, DWORD dwUserActionTime); END_INTERFACE_PART(HTMLWindow2 ).cpp文件加入如下代码BEGIN_INTERFACE_MAP(CDocHostSite, COleControlSite) INTERFACE_PART(CDocHostSite, IID_IDocHostShowUI, DocHostShowUI) INTERFACE_PART(CDocHostSite, IID_IDocHostUIHandler, DocHostUIHandler) INTERFACE_PART(CDocHostSite, IID_INewWindowManager, NewWindowManager)#if (_WIN32_IE >= 0x0501) // IE 5.5 and higher INTERFACE_PART(CDocHostSite, IID_IDocHostUIHandler2, DocHostUIHandler2)#endif INTERFACE_PART(CDocHostSite, IID_IInternetSecurityManager, InternetSecurityManager) INTERFACE_PART(CDocHostSite, IID_IServiceProvider, ServiceProvider) END_INTERFACE_MAP()ULONG CDocHostSite::XNewWindowManager::AddRef(){ METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalAddRef();}ULONG CDocHostSite::XNewWindowManager::Release(){ METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalRelease();}HRESULT CDocHostSite::XNewWindowManager::QueryInterface(REFIID riid, void ** ppvObj){ METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalQueryInterface( &riid, ppvObj );}HRESULT CDocHostSite::XNewWindowManager::EvaluateNewWindow( LPCWSTR pszUrl, LPCWSTR pszName, LPCWSTR pszUrlContext, LPCWSTR pszFeatures, BOOL fReplace, DWORD dwFlags, DWORD dwUserActionTime ){ METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->m_pView->OnEvaluateNewWindow( pszUrl, pszName, pszUrlContext, pszFeatures, fReplace, dwFlags, dwUserActionTime ); return E_NOTIMPL;}但是没有拦截到showmodeldialog()这样的函数,是什么原因呢? STDMETHODIMP CExtendedHtmlControlSite::XServiceProvider::QueryService(REFGUID guidService, REFIID riid, void** ppvObject){ if (riid == IID_INewWindowManager) { METHOD_PROLOGUE(CExtendedHtmlControlSite, ServiceProvider); HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObject); return hr; } else { *ppvObject = NULL; } return E_NOINTERFACE;} 请教音频wav文件中积分和的理解 'afxcontrolbars.h' 大哥大姐们,有没有adaboost人脸检测的C++代码啊~~ 想写一个压缩解压缩的小程序,用到动态调用cabinet.dll。向各位大侠请教不用类,只用接口函数的方法? 关于VC一个很菜的问题???? 如何用WIN32API给对话框加位图背景?(在线等) 怎么把一个IP转换成一个主机名?? 帮我出个主意 送分100分:建立类向导窗体中的几个常识性问题。 Python是什么东西? 怎樣記錄並讀出Log動態信息 有段代码debug正常,Release不执行不知道为什么,求教
INIT_INTERFACE_PART(CDocHostSite, HTMLWindow2 )
STDMETHOD(showModalDialog)(
LPCWSTR pszUrl,
LPCWSTR pszName,
LPCWSTR pszUrlContext,
LPCWSTR pszFeatures,
BOOL fReplace,
DWORD dwFlags,
DWORD dwUserActionTime);
END_INTERFACE_PART(HTMLWindow2 ).cpp文件加入如下代码
BEGIN_INTERFACE_MAP(CDocHostSite, COleControlSite)
INTERFACE_PART(CDocHostSite, IID_IDocHostShowUI, DocHostShowUI)
INTERFACE_PART(CDocHostSite, IID_IDocHostUIHandler, DocHostUIHandler)
INTERFACE_PART(CDocHostSite, IID_INewWindowManager, NewWindowManager)
#if (_WIN32_IE >= 0x0501) // IE 5.5 and higher
INTERFACE_PART(CDocHostSite, IID_IDocHostUIHandler2, DocHostUIHandler2)
#endif
INTERFACE_PART(CDocHostSite, IID_IInternetSecurityManager, InternetSecurityManager)
INTERFACE_PART(CDocHostSite, IID_IServiceProvider, ServiceProvider)
END_INTERFACE_MAP()
ULONG CDocHostSite::XNewWindowManager::AddRef()
{
METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalAddRef();
}ULONG CDocHostSite::XNewWindowManager::Release()
{
METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalRelease();
}HRESULT CDocHostSite::XNewWindowManager::QueryInterface(REFIID riid, void ** ppvObj)
{
METHOD_PROLOGUE(CDocHostSite, NewWindowManager); return pThis->ExternalQueryInterface( &riid, ppvObj );
}HRESULT CDocHostSite::XNewWindowManager::EvaluateNewWindow(
LPCWSTR pszUrl,
LPCWSTR pszName,
LPCWSTR pszUrlContext,
LPCWSTR pszFeatures,
BOOL fReplace,
DWORD dwFlags,
DWORD dwUserActionTime
)
{
METHOD_PROLOGUE(CDocHostSite, NewWindowManager);
return pThis->m_pView->OnEvaluateNewWindow( pszUrl,
pszName,
pszUrlContext,
pszFeatures,
fReplace,
dwFlags,
dwUserActionTime
);
return E_NOTIMPL;
}但是没有拦截到showmodeldialog()这样的函数,是什么原因呢?
REFIID riid,
void** ppvObject)
{
if (riid == IID_INewWindowManager)
{
METHOD_PROLOGUE(CExtendedHtmlControlSite, ServiceProvider);
HRESULT hr = (HRESULT)pThis->ExternalQueryInterface(&riid, ppvObject);
return hr;
}
else
{
*ppvObject = NULL; }
return E_NOINTERFACE;
}