为应用程序添加脚本支持.doc

上传人:灯火****19 文档编号:135037702 上传时间:2020-06-11 格式:DOC 页数:10 大小:50.51KB
返回 下载 相关 举报
为应用程序添加脚本支持.doc_第1页
第1页 / 共10页
为应用程序添加脚本支持.doc_第2页
第2页 / 共10页
为应用程序添加脚本支持.doc_第3页
第3页 / 共10页
为应用程序添加脚本支持.doc_第4页
第4页 / 共10页
为应用程序添加脚本支持.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《为应用程序添加脚本支持.doc》由会员分享,可在线阅读,更多相关《为应用程序添加脚本支持.doc(10页珍藏版)》请在金锄头文库上搜索。

1、为应用程序添加脚本支持http:/ 2006年07月21日 PowerCPP1 2 下一页 本文示例源代码或素材下载代码运行效果图如下:介绍有时我们并不需要提供完整的脚本支持,就像本文所要介绍的ActiveX脚本宿主(script hosting,可能称为脚本引擎更好理解),本文提供的ScriptControlMacro程序展示了使用Microsoft脚本控件简单地实现脚本支持功能,代码中还包括了以下一些技术:用文件映射实现只允许一个应用实例.如何用MFC存储读取二进制注册表数据如何保存恢复应用程序窗口尺寸,位置如何在CEditView派生类中使用不同地字体如何捕捉OLE异常并显示错误信息等.

2、开始前的准备这篇文章假定你已经对COM、ActiveX控件、OLE自动化有所熟悉,并知道如何在MFC里使用他们。因为这些技术包含了相当多的内容,因此你应该先学习一下这些内容再来看本文。基本步骤:1、建立一个提供ActiveX控件支持的新的MFC工程2、使用ClassWizard从脚本控件类型库中建立一个dispatch类ClassWizard将为脚本控件接口生成头文件与执行文件。 / Machine generated IDispatch wrapper class(es) created with/ ClassWizard/ IScriptControl wrapper classclass

3、 IScriptControl : public COleDispatchDriver/ Operationspublic:void SetLanguage(LPCTSTR lpszNewValue);void SetSitehWnd(HWND hWnd);LPDISPATCH GetError();void AddObject(LPCTSTR Name, LPDISPATCH Object, BOOL AddMembers);void AddCode(LPCTSTR Code);/ Machine generated IDispatch wrapper class(es) created/

4、with ClassWizard#include stdafx.h#include MSScriptControl.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ IScriptControl operationsvoid IScriptControl:SetLanguage(LPCTSTR lpszNewValue)static BYTE parms =VTS_BSTR;InvokeHelper(0x5dc, DISPATCH_PROPERTYPUT, VT_E

5、MPTY, NULL, parms,lpszNewValue);void IScriptControl:SetSitehWnd(HWND hWnd)static BYTE parms =VTS_I4;InvokeHelper(0x5de, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,hWnd);LPDISPATCH IScriptControl:GetError()LPDISPATCH result;InvokeHelper(0x5e3, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL)

6、;return result;void IScriptControl:AddObject(LPCTSTR Name, LPDISPATCH Object, BOOL AddMembers)static BYTE parms =VTS_BSTR VTS_DISPATCH VTS_BOOL;InvokeHelper(0x9c4, DISPATCH_METHOD, VT_EMPTY, NULL, parms, Name, Object, AddMembers);void IScriptControl:AddCode(LPCTSTR Code)static BYTE parms =VTS_BSTR;I

7、nvokeHelper(0x7d0, DISPATCH_METHOD, VT_EMPTY, NULL, parms,Code);3、删除类中不需要的IDispatch封装的方法4、如果你想自己添加函数,可以用ClassWizard添加一个自动化类。ClasWizard将为IDispatch接口产生如下头文件与执行文件:/ ScriptControlMacroDispatch.h : interface of the/ CScriptControlMacroDispatch class/#if !defined(AFX_SCRIPTCONTROLMACRODISPATCH_H_FB55B5AF_

8、00E5_47F5_B176_214B2C7BF19A_INCLUDED_)#define AFX_SCRIPTCONTROLMACRODISPATCH_H_FB55B5AF_00E5_47F5_B176_214B2C7BF19A_INCLUDED_#if _MSC_VER 1000#pragma once#endif/ _MSC_VER 1000/ CScriptControlMacroDispatch command targetclass CScriptControlMacroDispatch : public CCmdTargetDECLARE_DYNCREATE(CScriptCon

9、trolMacroDispatch)CScriptControlMacroDispatch(); / protected constructor used by dynamic creation/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CScriptControlMacroDispatch)/AFX_VIRTUAL/ Implementationprotected:/friend class CScriptControlMacroView;/ Generated message map f

10、unctions/AFX_MSG(CScriptControlMacroDispatch)/ NOTE - the ClassWizard will add and remove member/ functions here./AFX_MSGDECLARE_MESSAGE_MAP()/ Generated OLE dispatch map functions/AFX_DISPATCH(CScriptControlMacroDispatch)afx_msg void Test1();afx_msg void Test2();/AFX_DISPATCHDECLARE_DISPATCH_MAP()D

11、ECLARE_INTERFACE_MAP();/ Note: we add support for IID_IScriptControlMacroDispatch/ to support typesafe binding from VBA. This IID must match/ the GUID that is attached to the dispinterface in the/ .ODL file./ 69AA5686-41AF-4CD9-AEAE-9DB88130E7C1static const IID IID_IScriptControlMacroDispatch =0x69A

12、A5686, 0x41AF, 0x4CD9, 0xAE, 0xAE, 0x9D, 0xB8,0x81, 0x30, 0xE7, 0xC1;/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations/ immediately before the previous line.#endif/ !defined(AFX_SCRIPTCONTROLMACRODISPATCH_H_/ FB55B5AF_00E5_47F5_B176_214B2C7BF19A_INCLUDED_)/ ScriptControlM

13、acroDispatch.cpp : implementation of the/ CScriptControlMacroDispatch class/#include stdafx.h#include ScriptControlMacroDispatch.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CScriptControlMacroDispatchIMPLEMENT_DYNCREATE(CScriptControlMacroDispatch, CCmdTarget)CScriptControlMacroDispatch:CScriptControlMacroDispatch()EnableAutomation();BEGIN_MESSAGE_MAP(CScriptControlMacroDispat

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号