示例#1
0
BOOL InjectDomNode(IWebBrowser *pWb,CString strJSUrl)
{
	if (pWb == NULL)
	{
		return FALSE;
	}
	CComQIPtr<IHTMLDocument> pDoc;
	HRESULT hr = pWb->get_Document((IDispatch **)&pDoc);
	if ( FAILED(hr) || pDoc == NULL )
	{
		return FALSE;
	}

	CComQIPtr<IHTMLDocument2> pDoc2(pDoc);
	if (pDoc2 == NULL)
	{
		return FALSE;
	}

	CComQIPtr<IHTMLBodyElement> pBody(pDoc2);
	pDoc2->get_body((IHTMLElement **)&pBody);
	if (pBody == NULL)
	{
		return FALSE;
	}


	CComQIPtr<IHTMLElement> pElem;   
	CComQIPtr<IHTMLElement> pJscript;

	CComQIPtr<IHTMLDocument3> pDoc3 = pDoc;
	CComQIPtr<IDispatch> iDisp;
	CComBSTR PJsType = _T("script");      //javascript对象 

	hr = pDoc2->createElement(PJsType,&pJscript); //创建新元素对象
	if(FAILED(hr) || !pJscript ) 
		return FALSE;  

	pJscript->setAttribute(CComBSTR("type"),CComVariant("text/javascript"),0); //设置JS类型
	pJscript->setAttribute(CComBSTR("src"),CComVariant(strJSUrl),0); //设置JS类型
	pJscript->setAttribute(CComBSTR("charset"),CComVariant("gb2312"),0);
	//pJscript->setAttribute(CComBSTR("defer"),CComVariant(VARIANT_TRUE),0); //设置加载延迟(必须的)	
	//pJscript->setAttribute(CComBSTR("defer"),CComVariant("defer"),0); //设置加载延迟(必须的)	

	CComQIPtr< IHTMLDOMNode, &IID_IHTMLDOMNode > pBodyNode(pBody); //转为节点对象 

	if(pBodyNode && pDoc) 
	{ 
		CComQIPtr<IHTMLDOMNode,&IID_IHTMLDOMNode> pNewChild(pJscript); //转为节点对象 
		CComPtr<IHTMLDOMNode> pRefChild; 

		hr = pBodyNode->appendChild(pNewChild, &pRefChild); //加载body页面后面
		return hr==S_OK;
	} 
	return E_FAIL;
}
示例#2
0
AAboutForm* AAboutForm::CreateMe()
{
	afc_object<AMLBody> pBody(new AMLBody());
	AString xml;
	xml = g_szFormXML;
	xml.Replace(_T("@"),_T("\""));
	pBody->FromXML(xml);
	AAboutForm* p = dynamic_cast<AAboutForm*>( AControl::CreateInstance(&pBody,AApplication::Get()) );
	return p;
}
void AColorDialogForm::CreateFromXML()
{
	afc_object<AMLBody> pBody(new AMLBody());
	AString xml;
	xml = g_szDialogWnd;
	xml.Replace(_T("@"),_T("\""));
	pBody->FromXML(xml);
	this->FromXML(&pBody);
	this->CenterToScreen();
}
void AMessageForm::CreateFromXML(TDialogButton db)
{
	m_dbs = db;
	afc_object<AMLBody> pBody(new AMLBody());
	AString xml;
	xml = g_szDialogWnd;
	xml.Replace(_T("@"),_T("\""));
	pBody->FromXML(xml);
	this->FromXML(&pBody);
	this->CenterToScreen();
}
bool CHTTPMessageBodyBuilder::CreateMedia (IMediaTypePtr *retpBody)

//	CreateMedia
//
//	Creates the media buffer

	{
	IMediaTypePtr pBody(new CRawMediaType);
	pBody->DecodeFromBuffer(m_sMediaType, m_Body);
	*retpBody = pBody;
	return true;
	}
示例#6
0
WORD PEXPORT KppTestGoal(ITEMID idGoal)
{
#ifdef INFERENCE
    WORD i = FALSE;
    EXPID idBody;
    LPEXP lpBody2;
    LPGOAL lpGoal = (LPGOAL) KppGetItem(GOAL, idGoal);
    GLOBALHANDLE hBody2;
    LOGICALID (EXPORT FAR *pBody)(void);

    if (!lpGoal)
        return KppRegisterKappaMessage (hResThisDll, 
            IDE_ERRORINFUNC, lpIDs->idError, NULLID, NULLID);
    if (FLAGS(lpGoal) & CBODY)
    {
        pBody = CBODYPTR(lpGoal);
        KppReleaseItem(GOAL, idGoal);
        if ( !pBody )
            return KppRegisterKappaMessage (hResThisDll, 
                IDE_ERRORINFUNC, lpIDs->idError, NULLID, NULLID);
        KappaReturnAtom( pBody() );
    }
    else
    {
        idBody = BODY(lpGoal);
        KppReleaseItem(GOAL, idGoal);

        if (!idBody)
            KappaReturnAtom(lpIDs->idNull);

        lpBody2 = KppCopyTempExp(idBody, (GLOBALHANDLE FAR *)&hBody2);
        UnwindProtect (cleanup);
        i = Kpp_EvalExp(lpBody2);
      cleanup:
        KppReleaseTempExp(hBody2, i);
        EndProtect();
        return i;
    }
#endif
}