65.9K
CodeProject 正在变化。 阅读更多。
Home

MFC 应用程序的可嵌入脚本编辑器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.90/5 (57投票s)

2003 年 7 月 16 日

2分钟阅读

viewsIcon

351916

downloadIcon

6362

一个库,允许您将脚本功能嵌入到您的 C++ MFC 应用程序中。

对象事件列表

Sample screenshot

弹出对象属性和方法列表

Sample screenshot

类似 IntelliSense 的函数参数工具提示

引言

我一直在网上寻找一个合适的且价格合理的解决方案,以便将脚本功能嵌入到我的 C++ 应用程序中。我发现的要么不够用,要么花费很多钱。

所以我决定自己制作一个。经过大约一个月的努力和测试,我开发出了这个可嵌入的脚本引擎。

我把它做成了一个单独的 DLL,使用起来非常简单。

用法

  1. 下载源代码并编译它。确保编译正确的版本(Debug\Release)或两者都编译。
  2. 在您的项目中包含 ScriptEditor.h 并将库 ScriptEditor.lib 添加到您的附加库中。确保引用正确的版本!调试版本用于调试,发布版本用于发布!
  3. 将 DLL 复制到与您的可执行文件相同的文件夹中。
  4. 在您的代码中创建 CScripter 的实例并初始化它。
  5. 将您的对象添加到脚本中,并可选地添加脚本文本。

示例

在您的主应用程序窗口的头文件中添加

#include "..\ScriptEditor\Scripter.h"

添加成员变量

CScripter scripter;

然后在初始化时添加

 scripter.CreateEngine("VBScript");

之后,将您的对象添加到脚本中

scripter.AddObject("MPlayer",(IDispatch *)m_mediaPlayer.GetControlUnknown());
scripter.AddObject("PlayButton", 
      (IDispatch *)m_commandButton.GetControlUnknown());
scripter.AddObject("TabStrip",(IDispatch *)m_tabStrip.GetControlUnknown());
scripter.AddObject("SimpleObject",m_simpleObject.GetIDispatch(TRUE));

并可选地设置脚本文本

 scripter.scriptText = "MsgBox \"Test message\"";

之后,脚本就可以运行了,您现在可以执行以下操作之一

// Run the script
scripter.StartScript();

// Stop the script execution

scripter.StopScript();

// Open the script editor window

scripter.LaunchEditor();

// Reset the script (All added objects are removed and engine is recreated)

scripter.Reset();

历史

这是第一个版本,所以可能不是没有错误。我已经尽力跟踪任何错误,但总会有意外情况发生。因此,我将在此处发布任何后续的添加、补丁和修复。

  • 2003 年 7 月 19 日 - DLL 源代码已更新,可在 VS.NET 中编译(请阅读下面的消息)

致谢

  • 感谢 Gil Eizenburg 的调试和测试。
  • 感谢 Smaller Animals Software, Inc. 提供 ColorEditWnd 类。
  • 感谢 Daniel Madden 提供 CTokenEx 类。
© . All rights reserved.