js中调用vs代码 和 vs中调用js

来源:互联网 发布:2017蛋鸡存栏最新数据 编辑:程序博客网 时间:2024/06/05 08:50

js中调用vs代码:

头文件中:

DECLARE_DISPATCH_MAP()


cpp文件中:

对外开放接口:

EnableAutomation(); SetExternalDispatch(GetIDispatch(TRUE));


BEGIN_DISPATCH_MAP(CDlgChildListHtml, CDHtmlDialog)DISP_FUNCTION(CDlgChildListHtml, "page_initial",  DoHtmlInit, VT_EMPTY, VTS_VARIANT)DISP_FUNCTION(CDlgChildListHtml, "pkg_change",  DoPkgChange, VT_EMPTY, VTS_VARIANT VTS_VARIANT)DISP_FUNCTION(CDlgChildListHtml, "on_pkgs_sort",  DoPkgsSort, VT_EMPTY, VTS_VARIANT)END_DISPATCH_MAP()

void CDlgChildListHtml::DoHtmlInit(VARIANT& vStr1 ){CComVariant varStr1(vStr1);  varStr1.ChangeType(VT_BSTR);//Converts the CComVariant object to a VT_BSTR type.USES_CONVERSION;  CStringstrPkgXml;strPkgXml.Format( _T( "%s" ), OLE2T(varStr1.bstrVal) );CDlgMain* dlgmain = (CDlgMain*)GetParent();::SendMessage(dlgmain->m_hWnd, WM_LOADPAGE, 0, (LPARAM)strPkgXml.GetBuffer(0));strPkgXml.ReleaseBuffer();}


vs中调用js 中方法:

void CDlgChildListHtml::MyApp_AddItem(){if (m_strInstalledJson.IsEmpty())return;CStringstrExec;strExec.Format( _T( "ps_additems( %s )" ), m_strInstalledJson );CComBSTR bstrjs = strExec.AllocSysString();ExecJavascript(bstrjs);m_strInstalledJson.Empty();}


BOOL CDlgChildListHtml::ExecJavascript(CComBSTR bstrjs){IHTMLDocument2* pDocument;HRESULT hr = GetDHtmlDocument(&pDocument);if( hr == S_OK ){IHTMLWindow2* pWindow;hr = pDocument->get_parentWindow(&pWindow);if( hr == S_OK ){VARIANT ret;ret.vt = VT_EMPTY;hr = pWindow->execScript(bstrjs, L"javascript",&ret);if (hr == S_OK)return TRUE;}} return FALSE;}




原创粉丝点击