在Word中嵌入应用程序
更新时间:2023-07-20 12:06:01 阅读量: 实用文档 文档下载
在Word中嵌入应用程序
在Word中嵌入应用程序
2001-09-19· ·鲁松 张梅 ··vbeden
Microsoft Word以其强大的文字处理能力、灵活多变的排版方法、所见即所得以及友好的用户界面等特点,博得了广大用户的肯定。但是,若能将其他一些功能,如机器翻译、中文校对、全文检索、实时语音合成等嵌入其中,则可以扩展Word的功能,使开发者能够更加充分地利用Word资源,加快开发速度。
开发Word应用程序常用的有以下几种编程语言:Word Basic、VBA(Visual Basic for Applications)和Word API。 尽管Word Basic和VBA功能强大,但作为简单修改Word的工具,多少有些大材小用。笔者认为,Word API是开发Word应用程序的首选工具,尤其是可以利用C语言代码的快速、高效和灵活的特点,而且可以使用Word Basic接口函数和Windows动态连接库编程环境,实现对Word功能的添加。
Word API的使用方法
Word API生成的是一个可在Word中直接运行的Word加载项,它是一个以WLL为扩展文件名的单机动态连接库。这种WLL是标准的Windows动态连接库的特殊形式。可以用任何一个创建Windows DLL的环境来编译、链接和建立WLL。
Microsoft Word Developer's Kit(MS Word开发工具箱)中,提供了Word API的接口函数,下面分别加以介绍。
1. Word加载项的启动和卸载函数
(1) void FAR PASCAL wdAutoOpen(short DocID)
在Word中加载WLL的同时,Word会自动执行这个函数。在执行过程中,函数wdAutoOpen完成以下几个任务:
·向Word登记WLL中定义的所有函数;
·将WLL中的操作命令添加到Word的主菜单、快捷菜单和工具条中;
·给WLL的操作命令指定快捷键;
·完成WLL功能的初始化(如:机器翻译、中文校对的词库读入等)。
(2) void FAR PASCAL wdAutoRemove(void)
当WLL被卸载时,如果WLL程序中定义了wdAutoRemove(void)函数,Word将在卸载时执行这个函数。在该函数中,可以保存退出时我们定义功能函数生成的必要数据。
. Word加载项中的登记函数
要想让Word中的某个主菜单项、快捷菜单项、工具条按钮或快捷键完成我们定义的某个函数,就必须在加载WLL时,先向Word登记我们的应用函数。Word API的接口函数CAPIRigister可以完成登记任务。该函数定义形式如下:
3. 在Word中将加载函数添加到主菜单项、快捷菜单项、工具条按钮和快捷键中 在WLL中应用函数登记完成之后,就可以在主菜单、快捷菜单和工具条中添加自己的菜单项和快捷键。这些工作由下面的函数完成
在Word中嵌入应用程序
*S在Word中添加新的工具条:
·在菜单项中添加新的菜单命令:
要想定义组合键的快捷键方式,就需把几个键在Word Basic中的代码数字的二进制进行按位‘或’运算,将结果传递给第二个参数KeyCode。例如:快捷键CTRL+S的KeyCode是(256 OR 83)=339。
4. Word API调用Word Basic函数前,函数参数和返回值的数据缓冲区的建立Word中的所有字处理功能都可由对应的Word Basic函数来实现。正是利用这一点,在
WLL中可以通过调用Word Basic函数来实现对Word的定制。因此,必须利用Word API函数InitWCB设立调用Word Basic函数时传递参数与返回值的数据缓冲区。
InitWCB的参数说明如下:
例如,下面这段程序是获取所选区域的字符串字体情况:
WCB wcb; file://Word的参数和返回值传递的数据区
short isbold;
InitWCB(&wcb,TypeShort,NULL,0);
file://设立传递Word Basic函数参数和返回值的数据区wcb
WORDFUNCTION(wdBold);
file://调用Word Basic函数Bold()
isbold=wcb.wdoprReturn.Short;
file://从数据区wcb中取出Word Basic函数Bold()的返回值
5. Word Basic函数调用方法
Word中的命令是与Word Basic函数一一对应的。因此,Word API可以通过接口函数用C语言直接调用Word Basic函数来实现Word命令。
注意:在Word API中调用Word Basic命令函数名时均须在Word Basic函数名前加上2个英文字母‘wd’,如:Word Basic函数Bold在Word API中的函数名应为wdBold。 根据这些函数有无返回值与是否为响应对话框的情况,在Word API头文件
在Word中嵌入应用程序
basedef.h定义了三种调用方法:WORDCALL、WORDFUCTION和WORDDIALOG。 ·若被调用的Word Basic函数无返回值,用Word API接口函数WORDCALL来调用,形式是:WORDCALL(函数名);
· 若被调用的Word Basic函数有返回值,用Word API接口函数WORDFUNCTION来调用,形式是:WORDFUNCTION(函数名);
·若被调用的Word Basic函数是有关对话框操作,用Word API函数WORDDIALOG来调用,形式是:WORDDIALOG(函数名)。
例如:Word Basic中,给所选区域字符标粗体的函数Bold与判断所选区域字符是否为粗体的函数Bold()的调用方法就不同:
·函数Bold是一个操作,无须返回值,所以调用形式是WORDCALL(wdBld)。
·函数Bold()是一个判断,必须有返回值,所以调用形式是WORDFUNCTION(wdBold);
6. Word Basic函数参数的传递方法
在调用Word Basic带参函数时,需要通过Word API特定接口函数来传递参数。同时,对不同类型的函数,参数的传递方法也不同。
(1) 逐个传递参数
这种传递参数的方法适用于参数位置固定的函数,例如:Word Basic函数: MenuText$(Type,MenuNumber[,Context])
其中的三个参数是按次序排列的。由于Word API调用Word Basic函数方式是函数名作为WORDCALL、WORDFUCTION和WORDDIALOG的参数,无法一次添加Word Basic函数参数,所以传递Word Basic函数参数时需要在InitWCB函数设置数据缓冲区后,依次通过数据缓冲区传递参数,第一个赋给Type,第二个赋给MenuNumber,如果有第三个参数则赋给Context。
在向这类函数传递参数时,根据待传递参数数据类型的不同,有以下4个函数可以选用
·传递short型参数的函数:
·传递long型参数的函数:
·传递字符串参数的函数:
在Word中嵌入应用程序
这种传递参数的方法适用于参数有标识名指明的函数。这种函数的参数有定义了的标识,传递时没有次序问题。例如:Word Basic中插入空表的函数TableInsertTable: Ta
因此,向TableInserTable函数传递参数时,只需指明哪一个标识即可。这种情况一般用于具有较多参数的函数。
在向这类函数传递参数时,与上面的类似,也是根据参数数据类型的不同,有以下4个函数可以选用:
下面的例子是要在光标所在位置插入一个4*12的空表:
标识名。调用函数AddString DlgField,将表的行数"4"和列数"12"直接传给Word Basic的函数TableInsertTable的两个参数NumColumns和NumRows。
注意:在Word API文件wdfid.h中被定义了的函数参数的标识名是与Word Basic函数的参数标识名一一对应的,但不同的是,Word API的参数标识名是在WordBasic的参数标识名前加了‘fid’构成的。如:Word Basic的函数TableInsertTable有两个参数是NumColumns和NumRows,那么,在Word API中的参数标识名就应是fidNumColumns和fidNumRows。
创建WLL的程序框架
本文给出一个用Word API完成的完整WLL框架,来实现如下图所示Word中的修改。
在Word中加载或卸载WLL
经过编译、链接生成DLL文件(动态连接库文件)后,必须将文件的扩展文件名.dll改为.wll,以便在加载WLL时能被Word正确识别为Word加载项。
将自己编写的WLL加载到Word中有以下几种方法:
·模板方式加载:在Word中主菜单‘文件’中找到‘模板’,进去后按下‘添加’按钮,选中自己编写的WLL模板文件(文件扩展名为wll)后‘确定’,加载WLL即可完成。 ·打开文件方式加载:像打开一般的Word文档一样,打开WLL模板文件,即可完成
在Word中嵌入应用程序
加载 。
·Word自动完成加载:将WLL模板文件复制..\windord\startup\目录下,像Word中的常用模板一样,在启动Word时,Word会自动将WLL模板文件加载到Word中。
卸载WLL的方法只有一种:在Word中主菜单‘文件’中找到‘模板’,将‘共用模板及加载项’框中‘translate.wll’前的复选钮钩掉后‘确定’,卸载WLL的工作即可完成。
正在阅读:
在Word中嵌入应用程序07-20
职业规划 文档12-27
有关多彩的童年的作文3篇04-02
新编2012年会计从业资格考试应试模拟试卷-会计电算化理论(2012电03-08
苍龙逐日复刻版攻略心得与人物及武功简评05-03
人力资源控制程序03-08
广州2014年11月展会信息大全08-29
压力容器设计人员2014考试卷A-答案04-16
小猫真有趣作文700字07-05
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 应用程序
- 嵌入
- Word
- 2014年大学英语三级考试模拟冲刺试题及答案(一)
- 2015二级建造师施工管理各章节练习题
- 第二章 服务价值理论
- 整式的运算练习题
- 建筑构造课程理论与实践教学整合方法研究
- 浅谈企业集团偿债能力分析
- 医疗器械产品检测报告认可须知
- 动态前言论文 浅析民营物流企业的运营发展模式
- 中考语文开放性试题集萃.doc
- 数据中心机房规划方案
- 国资监管新模式探析(彭建国)
- 急性白血病中西医治疗介绍
- XX农村商业银行工作总结
- 三国风云2兵种秘籍 三国风云2兵种有哪些
- 办公自动化实验报告
- 2012年度考试录用公务员职位计划情况简表(市州)
- 《冶金矿山预算定额 》(2010年版)O
- 寓言两则教学设计
- 小学三年级上册同步作文
- 2014年四川省乐山市中考化学试卷(解析版)