小弟目前正弄一数据引擎的项目,需要采用脚本引擎来完成控制逻辑。这段时间摸索了下,得到了些结果,也出现了些问题。第一次试验,采用ATL制作带自动化接口与连接点的自动化对象的DLL,客户程序采用MFC框架引入Msscriptcontrol实现了脚本调用对象与事件回调。第二次实验,直接建立MFC应用程序,在内部嵌入ATL OBJECT也实现了实验一对应接口。如下:
m_pIScripttrigger = new CComObject<CScripttrigger>;
spScriptCtl.CreateInstance(__uuidof(ScriptControl));
_bstr_t bstrLanguage(L"VBScript");
spScriptCtl->put_Language(bstrLanguage);
    HRESULT HEHE=spScriptCtl->AddObject("xixi",(IScripttrigger*)m_pIScripttrigger,true);
     添加对象返回也是正确的,可是在添加脚本引入XIXI总是报错,不错错误源为应用程序抱错。而不是语法错误。哪位高手指点下迷津。

解决方案 »

  1.   

    添加对象成功了,调用对象失败,两个实验的差别是,试验一显式的引入了接口tlb文件,试验二没有引入。我开始猜想是不是没有引入,可是应用程序自身有了接口的I.C,I.H等文件,我引入后就出现type name first seen using 'class' now seen using 'struct'这样的错误。即由tlb文件得到的tlh文件定义与I.C,I.H矛盾。不知道如何解决。
      

  2.   

    引入public IActiveScriptSite,试验成功,但脚本解释不了MsgBox,其他功能都可以实现。
      

  3.   

    按照这个做成功了
    http://www.codeguru.com/cpp/com-tech/activex/controls/print.php/c5559/
    Adding Scripting Support to an Application
      

  4.   

    引入public IActiveScriptSite后完全实现了脚本触发,及对象接口的调用,并完成了VB到VC数据类型的转换。但用Msscriptcontrol的问题没解决,可能还是对Msscriptcontrol没有深入了解。不管怎样求其次还是通过public IActiveScriptSite这个实现了我想要的功能。感谢大家。等讨论完了给分