And*_*rew 6 javascript c++ mfc
我有一个CDHTMLDialog,我有2个HTML页面和一个.js文件,有一些相当简单的功能.
我希望能够从我的程序中调用一个JS函数,并使用它传递一个简单的数据类型.例如MyFunc(int).什么都不需要退货.
我很感激任何有关我如何做到这一点的指导,
谢谢.
编辑:感谢CR的答案,以及其他提交了这些想法的人.
有点像这样的东西最终起作用(为了清晰起见剥离了一点错误处理):
void callJavaScriptFunc(int Fruit)
{
HRESULT hRes;
CString FuncStr;
CString LangStr = "javascript";
VARIANT vEmpty = {0};
CComPtr<IHTMLDocument2> HTML2Doc;
CComPtr<IHTMLWindow2> HTML2Wind;
hRes = GetDHtmlDocument(&HTML2Doc);
hRes = HTML2Doc->get_parentWindow(&HTML2Wind);
if( Fruit > 0 )
{
FuncStr = "myFunc(808)"; // Javascript parameters can be used
hRes = HTML2Wind->execScript(FuncStr.AllocSysString(), LangStr.AllocSysString(), &vEmpty);
}
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是使用IHTMLWindow2接口中的execScript()方法。
因此,您可以通过调用GetDHtmlDocument从CDHTMLDialog获取IHTMLDocument2接口,然后从IHTMLDocument2获取parentWindow。父窗口将具有支持execScript()的IHTMLWindow2接口。
可能有一种更简单的方法可以从 CDHTMLDialog 获取 IHTMLWindow2 界面,但我习惯在较低级别工作。