久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

CDHtmlDialog實(shí)現(xiàn)調(diào)用html中js函數(shù)-江湖宵小-搜狐空間

 DavinTang 2011-03-18

CDHtmlDialog實(shí)現(xiàn)調(diào)用html中js函數(shù)

分享
分類: 編程進(jìn)行時 2008-05-05 14:17
1.在APP的InitInstance()函數(shù)中加入AfxEnableControlContainer();以支持ole控件;
2.在CDHtmlDialog::OnInitDialog()中加入SetExternalDispatch(GetIDispatch(TRUE));
3.通過以下函數(shù)實(shí)現(xiàn)調(diào)用js函數(shù):
BOOL CDHtmlDialog::CallJScript(const CString strFunc, _variant_t* pVarResult)
{
    CStringArray paramArray;
    return CallJScript(strFunc,paramArray,pVarResult);
}

BOOL CDHtmlDialog::CallJScript(const CString strFunc,const CString strArg1,_variant_t* pVarResult)
{
    CStringArray paramArray;
    paramArray.Add(strArg1);
    return CallJScript(strFunc,paramArray,pVarResult);
}

BOOL CDHtmlDialog::CallJScript(const CString strFunc, const CStringArray& paramArray,_variant_t* pVarResult)
{
    CComPtr<IDispatch> spScript;
    if(!GetJScript(spScript))
    {
        MessageBox("函數(shù)GetJScrip調(diào)用失??!");
        return FALSE;
    }
    CComBSTR bstrFunc(strFunc);
    DISPID dispid = NULL;
    HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrFunc,1,
        LOCALE_SYSTEM_DEFAULT,&dispid);
    if(FAILED(hr))
    {
        //MessageBox(GetSystemErrorMessage(hr));
        return FALSE;
    }

    INT_PTR arraySize = paramArray.GetSize();

    DISPPARAMS dispparams;
    memset(&dispparams, 0, sizeof dispparams);
    dispparams.cArgs = (UINT)arraySize;
    dispparams.rgvarg = new VARIANT[dispparams.cArgs];

    for( int i = 0; i < arraySize; i++)
    {
        CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading
        bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);
        dispparams.rgvarg[i].vt = VT_BSTR;
    }
    dispparams.cNamedArgs = 0;

    EXCEPINFO excepInfo;
    memset(&excepInfo, 0, sizeof excepInfo);
    _variant_t vaResult;
    UINT nArgErr = (UINT)-1;  // initialize to invalid arg

    hr = spScript->Invoke(dispid,IID_NULL,0,
        DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);

    delete [] dispparams.rgvarg;
    if(FAILED(hr))
    {
        //MessageBox(GetSystemErrorMessage(hr));
        return FALSE;
    }

    if(pVarResult)
    {
        *pVarResult = vaResult;
    }
    return TRUE;
}

BOOL CDHtmlDialog::GetJScript(CComPtr<IDispatch>& spDisp)
{
    if( m_spHtmlDoc==NULL )
        return FALSE;

    HRESULT hr = m_spHtmlDoc->get_Script(&spDisp);
    ATLASSERT(SUCCEEDED(hr));
    return SUCCEEDED(hr);
}

4.調(diào)用實(shí)例:
CallJScript("alert","test");

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多