3,245
社区成员
发帖
与我相关
我的任务
分享
void CMyOcxCtrl::OnSetClientSite()
{
// TODO: 在此添加专用代码和/或调用基类
if (m_pClientSite)
VERIFY (CreateControlWindow (::GetDesktopWindow(), CRect(0,0,0,0),
CRect(0,0,0,0)));
//COleControl::OnSetClientSite();
HRESULT hr ;
m_pScript=NULL;
CComPtr<IOleContainer> spContainer;
hr = m_pClientSite-> GetContainer(&spContainer);
ATLASSERT(spContainer);
m_pHTMLDocument = spContainer;
hr = m_pHTMLDocument->get_scripts(&m_pScript);
ATLASSERT(m_pScript);
}
CComBSTR bstrMember("Show");
DISPID dispid;
HRESULT hr = m_pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_SYSTEM_DEFAULT,&dispid);
//此时hr返回 0X80020006 未知名称
function Show()
{
//显示界面
var bgObj = document.getElementById("Container");
bgObj.style.display = "none";
var bgObj = document.getElementById("ocx");
bgObj.style.display = "block";
}
USES_CONVERSION;
IOleContainer* pContainer = NULL;
IHTMLDocument* pDoc = NULL;
m_pClientSite->GetContainer( &pContainer );
if ( pContainer != NULL )
pContainer->QueryInterface( IID_IHTMLDocument, (void**)&pDoc );
HRESULT hresult;
OLECHAR FAR* szMember = T2W(func);
DISPID dispid;
DISPPARAMS dispparamsNoArgs = {NULL, NULL, 0, 0};
IDispatch * pdisp = NULL;
pDoc->get_Script(&pdisp);
hresult = pdisp->GetIDsOfNames(IID_NULL,&szMember,1, LOCALE_SYSTEM_DEFAULT,&dispid);
hresult = pdisp->Invoke(dispid,IID_NULL,LOCALE_USER_DEFAULT,DISPATCH_METHOD,&dispparamsNoArgs, NULL, NULL, NULL);
pContainer->Release();