newkey007(无限天空)回复一下,可以送200分.见http://expert.csdn.net/Expert/topic/2377/2377183.xml?temp=.9757501 RT 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1。 activcx 实现 IOleInPlaceSite IOleClientSite 接口2。HRESULT CNXPWebCtrl::FinalConstruct(){ CComVariant varEmpty; m_pWebBrowser = NULL; CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC, IID_IWebBrowser2, (void**)&m_pWebBrowser); return S_OK;}3。LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { MSG Msg; RECT rcClient; IOleObject* pOleObject; IUnknown* pUnk; HRESULT hResult; pOleObject = NULL; m_pWebBrowser->QueryInterface(IID_IOleObject, (void**)&pOleObject); ATLASSERT(pOleObject); hResult = pOleObject->SetClientSite(this); ATLASSERT(SUCCEEDED(hResult)); hResult = pOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, &Msg, this, 0, m_hWnd, &rcClient); ATLASSERT(SUCCEEDED(hResult)); pOleObject->Release(); pUnk = NULL; m_pWebBrowser->QueryInterface(IID_IUnknown, (void**)&pUnk); hResult = AtlAdvise(pUnk, this->GetUnknown(), DIID_DWebBrowserEvents2, &m_dwCookie); ATLASSERT(SUCCEEDED(hResult)); pUnk->Release(); IOleInPlaceObject* pObject = NULL; m_pWebBrowser->QueryInterface(IID_IOleInPlaceObject,(void**)&pObject); ATLASSERT(pObject); hResult = pObject->SetObjectRects(&rcClient, &rcClient); ATLASSERT(SUCCEEDED(hResult)); pObject->Release(); CComVariant varEmpty; return m_pWebBrowser->Navigate(L"about:blank", &varEmpty, &varEmpty, &varEmpty, &varEmpty); }4。STDMETHODIMP CNXPWebCtrl::Invoke( DISPID DispIDMember, REFIID refid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* e, UINT *ui){// if (!pVarResult)// { // return E_POINTER; //} // PrintDISPID(DispIDMember); switch (DispIDMember) { case DISPID_NEWWINDOW2: NewWindow2(pDispParams); break; case DISPID_PROGRESSCHANGE: OnProgressChange(pDispParams); break; case DISPID_STATUSTEXTCHANGE: OnStatusTextChange(pDispParams); break; case DISPID_DOCUMENTCOMPLETE: OnComplete(); break; case DISPID_BEFORENAVIGATE2: BeforeNavigate2(pDispParams); ClearCookie(); break; case DISPID_BEFORENAVIGATE: ClearCookie(); break; case DISPID_ONQUIT: ClearCookie(); break; case DISPID_HTMLELEMENTEVENTS_ONDBLCLICK: OnClicked(pVarResult); break; case DISPID_HTMLELEMENTEVENTS_ONCLICK: OnClicked(pVarResult); break; default: return IDispatchImpl<INXPWebCtrl,&IID_INXPWebCtrl, &LIBID_NXPWEBLib,1,0, ::ATL::CComTypeInfoHolder>::Invoke(DispIDMember, refid, lcid, wFlags, pDispParams, pVarResult, e, ui); //return DISP_E_MEMBERNOTFOUND; } return S_OK;}5。void CNXPWebCtrl::OnComplete(){ if (!m_pWebBrowser) { return; } IHTMLDocument2 *pDocument = GetDocument(); if (!pDocument) { return; } if (!m_dwCookie2) { IUnknown* pUnk = NULL; pDocument->QueryInterface(IID_IUnknown, (void**)&pUnk); ATLASSERT(pUnk); AtlAdvise(pUnk, GetUnknown(), DIID_HTMLDocumentEvents, &m_dwCookie2); pUnk->Release(); } pDocument->Release();}或者 留个 emial, 我发个我写的 给你 多谢了.查了一些资料.发现如果用Advise(...)方式截获DIID_HTMLDocumentEvents的方法有时候对一些IE版本没有用.我用了类似的方法在IE5.5+环境里可以.但在IE5.0一下就不行.麻烦发送你的代码到[email protected].我试一下是否可以在早的版本里面运行.有个方法就是获取IHTMLElement,然后调用IHTMLElement::put_onclick(...)方法可以保证对IE4.0+版本有效果.只是我试了没有成功.是否有什么别的建议?我有几千分可以送.要分不是问题.:D 语音数据的缓冲数量问题请教 LIKE通配符问题 重载DefWindowProc的问题 BeginPath 启动一个路径分支 ADO:MDAC2.8 使用createparamter创建adunsignedbigint时老提示错误的变量类型,怎么办? Application如何取得显示器的EDID? 关于SetTimer的问题 在控件上画图时产生了一个运行时的指针错误,请高手指教。 各位大哥,大姐们,请问一下,硬盘序列号的问题? 为什么无法使用Crypt开头的相关函数??? 在MFC程序中如何用属性编程方法实现对COM事件的响应? 关于ActiveX控件中通信控件的一个问题
2。HRESULT CNXPWebCtrl::FinalConstruct()
{
CComVariant varEmpty;
m_pWebBrowser = NULL;
CoCreateInstance(CLSID_WebBrowser, NULL, CLSCTX_INPROC, IID_IWebBrowser2,
(void**)&m_pWebBrowser);
return S_OK;
}3。LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
MSG Msg;
RECT rcClient;
IOleObject* pOleObject;
IUnknown* pUnk;
HRESULT hResult;
pOleObject = NULL;
m_pWebBrowser->QueryInterface(IID_IOleObject, (void**)&pOleObject);
ATLASSERT(pOleObject);
hResult = pOleObject->SetClientSite(this);
ATLASSERT(SUCCEEDED(hResult));
hResult = pOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, &Msg, this, 0, m_hWnd, &rcClient);
ATLASSERT(SUCCEEDED(hResult));
pOleObject->Release();
pUnk = NULL;
m_pWebBrowser->QueryInterface(IID_IUnknown, (void**)&pUnk);
hResult = AtlAdvise(pUnk, this->GetUnknown(), DIID_DWebBrowserEvents2, &m_dwCookie);
ATLASSERT(SUCCEEDED(hResult));
pUnk->Release();
IOleInPlaceObject* pObject = NULL;
m_pWebBrowser->QueryInterface(IID_IOleInPlaceObject,(void**)&pObject);
ATLASSERT(pObject);
hResult = pObject->SetObjectRects(&rcClient, &rcClient);
ATLASSERT(SUCCEEDED(hResult));
pObject->Release();
CComVariant varEmpty; return m_pWebBrowser->Navigate(L"about:blank", &varEmpty, &varEmpty, &varEmpty, &varEmpty);
}4。STDMETHODIMP CNXPWebCtrl::Invoke(
DISPID DispIDMember,
REFIID refid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO* e,
UINT *ui)
{
// if (!pVarResult)
// {
// return E_POINTER;
//}
// PrintDISPID(DispIDMember);
switch (DispIDMember)
{
case DISPID_NEWWINDOW2:
NewWindow2(pDispParams);
break;
case DISPID_PROGRESSCHANGE:
OnProgressChange(pDispParams);
break;
case DISPID_STATUSTEXTCHANGE:
OnStatusTextChange(pDispParams);
break;
case DISPID_DOCUMENTCOMPLETE:
OnComplete();
break;
case DISPID_BEFORENAVIGATE2:
BeforeNavigate2(pDispParams);
ClearCookie();
break;
case DISPID_BEFORENAVIGATE:
ClearCookie();
break;
case DISPID_ONQUIT:
ClearCookie();
break;
case DISPID_HTMLELEMENTEVENTS_ONDBLCLICK:
OnClicked(pVarResult);
break;
case DISPID_HTMLELEMENTEVENTS_ONCLICK:
OnClicked(pVarResult);
break;
default:
return IDispatchImpl<INXPWebCtrl,&IID_INXPWebCtrl,
&LIBID_NXPWEBLib,1,0,
::ATL::CComTypeInfoHolder>::Invoke(DispIDMember,
refid,
lcid,
wFlags,
pDispParams,
pVarResult,
e,
ui);
//return DISP_E_MEMBERNOTFOUND;
}
return S_OK;
}5。void CNXPWebCtrl::OnComplete()
{
if (!m_pWebBrowser)
{
return;
}
IHTMLDocument2 *pDocument = GetDocument();
if (!pDocument)
{
return;
}
if (!m_dwCookie2)
{
IUnknown* pUnk = NULL;
pDocument->QueryInterface(IID_IUnknown, (void**)&pUnk);
ATLASSERT(pUnk);
AtlAdvise(pUnk, GetUnknown(), DIID_HTMLDocumentEvents, &m_dwCookie2);
pUnk->Release();
}
pDocument->Release();
}或者 留个 emial, 我发个我写的 给你