您的位置:逆风者 VC++ 正文
 添加时间:2007-09-01 原文发表:2007-08-31 人气:264 来源:vckbase.com

本文章共2741字,分2页,当前第1页,快速翻页:
 

为你的MFC程序添加宏脚本语言


原著: Ernest Laurentin

翻译:haily

逆@风@者

下载源代码


屏幕截图



简介
我总是对脚本控件(msscript.ocx)如何使用和当需要使用的时候,C 开发者该如何应对感到惊奇。可能扩展名(.ocx)使他们觉得,那是vb!在本文中,我将解决这些界限,给出 C 开发者使用它的新的理由。

问题描述
由于MS开发者的努力而创造的 Windows 脚本技术,使在VB和 C 应用中使用vbScript和Jscript变得相当简单的。开发者只需要知道如何使用Microsoft脚本控件和如何给一个脚本方法传值就可以了。由此,首先我想要提出的一个包容类是CScriptObject。这个包容类的使用是非常简单的,她提供了你将会在你应用程序中使用的大部分功能。它能提供从文件和资源中中载入脚本(文本数据),得到方法列表,选择脚本语言和执行函数和语句的功能。本类不依赖于MFC,能在控制台程序(console Application)中使用。
对脚本调用首先最重要的是要了解VBScript和Jscript只能处理VARIANT类型的参数。这就是我建立CSafeArrayHelper类的原因了。CSafeArrayHelper包容类允许你建立你将要传给你的Script函数的的参数。

class CSafeArrayHelper

{

    public:

        CSafeArrayHelper();

        ~CSafeArrayHelper();



    bool Create(VARTYPE  vt, UINT  cDims, UINT lBound, UINT cCount);

    bool Destroy();

    UINT GetDimension();



    bool Attach(LPSAFEARRAY psa);

    bool AttachFromVariant(VARIANT* pVariant);

    LPSAFEARRAY Detach();

    LPSAFEARRAY GetArray();

    bool AccessData(void FAR* FAR* pvData);

    bool UnaccessData();

    bool Lock();

    bool Unlock();

    bool PutElement(long lIndices, void FAR* vData);

    bool GetElement(long lIndices, void FAR* vData);

    VARIANT GetAsVariant();



    protected:

    LPSAFEARRAY    m_pSA;



    private:

};      
它提供和SAFEARRAY对象同样的功能,但是它对于我们某些人(比如我)来说,使用更简单。 当你想看你包装在你的SAFEARRAY中的数据类型的时候,函数GetAsVariant可能会很有用。由于SAFEARRAY的数据类型(fFeatures)不能处理所有的类型,所以此函数也不能读取所有的数据类型。也就是说,这个函数只是对数据类型的猜测。

如何使用
要使用这个控件,首先我推荐你看看VBScript和JScript的文档以了解你所有能在脚本语言里能实现的功能。

写一个脚本函数
假设我们想建立一个简单的函数来把温度从华氏度转换到摄氏度:
用 VBScript 写:
Function Celsius(fDegrees)

   Celsius = (fDegrees - 32) * 5 / 9

End Function
用 JScript 写:
function Celsius(fDegres)

{

   return (fDegres-32)*5/9;

}

    
要执行这个函数,只需要把每个变量存储到VARIANT里。由于你的函数(方法)可能包含不止一个参数,我们必须用一个SAFEARRAY来包装它。在后一种情况,你可能想通过检查String函数的.length属性或其他的方法来看数组传给函数的参数的数目。
function CountParam(aParam)

{

    var strPresent = "Parameter is : "   (aParam.length>0 ? "Present": "Not present");

    return strPresent;

}

    
同样的技术可以用在VBScript中,它允许你在运行时检测变长参数。调用无参数的函数,也要创建SAFEARRAY,只是没有参数。 调用一个脚本函数。 你的代码应该和下边的实例一样简单::
 
本文章更多内容1 - 2 - 下一页>>
相关文章

解说Win32的窗口子类化
ADO智能开发包
UTF-7 邮件安全的 Unicode 转换编码
用 C 语言编写 Windows 服务程序的五个步骤
在VC项目中使用自定义资源
使用 CInternetSession 封装多线程 http 文
MFC程序员的WTL指南: Part V - 高级对话框用
SQL Server 索引结构及其使用(一)
一个简单的系列号(SN)填写器
安装钩子,托管C 中的字符串以其它
Island Hopper News 范例及其它
如何获取某个动态链接库的版本信息
多层图像合成修正版
在你的MFC应用程序中显示一个JPG文件
FMail文件信使 V2.0
WinSock学习笔记(二)
MySQL数据库接口的VC实现与应用
C语言之四书五经
一个可重用的RAS 类
Windows中回收站(Recycle Bin)的存取方法

相关评论


本文章所属分类:首页 VC++

  热门关键字: