现在的位置: 首页 > 综合 > 正文

用VC++生成接口的COleDispatchDriver包装类来调用COM组件

2012年12月22日 ⁄ 综合 ⁄ 共 800字 ⁄ 字号 评论关闭
一般地,可以使用CoCreateInstance来调用COM组件。但对于实现了IDispatch接口的COM组件,还有更容易的方法——用VC++自动生成接口的COleDispatchDriver包装类来调用COM组件。
 
举例说明:在VC++中执行脚本语句,比如VBScript语句。
 
系统提供了一个控件:C:\WINDOWS\system32\msscript.ocx,它提供了一个叫做IScriptControl的接口,通过它,我们就可以执行脚本语句了。
 
1.用VC++自动创建包装类
用VC++建立一个支持MFC的工程,添加一个类,选择“类型库中的MFC类”,再选择msscript.ocx文件,并将IScriptControl添加到右栏,如下图:

VC++添加类型库中的MFC类
 
点击完成后即可生成CScriptControl包装类。

 
2.使用生成的类
    //初始化COM
    CoInitialize(NULL);
 
    //创建MSScriptControl.ScriptControl实例
    //这个名称(ProgId)可以通过VC++目录下的小工具oleview得到。
    CScriptControl js;
    if (js.CreateDispatch("MSScriptControl.ScriptControl"))
    {
        //设置当前使用的脚本语言
        js.put_Language("JScript");
        //执行语句,执行完成后var中即包含了表达式的结果
        VARIANT var=js.Eval("1.234+5.31");
        //释放接口
        js.ReleaseDispatch();
    }
       
    //关闭COM
    CoUninitialize();
 
 3.本例的其他用处

可以很方便将这点代码封装为一个表达式计算器。

抱歉!评论已关闭.