电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 网页制作-> 心得技巧
在word中嵌入应用程序_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
MicrosoftWord以其强大的文字处理能力、灵活多变的排版方法、所见即所得以及友好的用户界面等特点,博得了广大用户的肯定。但是,若能将其他一些功能,如机器翻译、中文校对、全文检索、实时语音合成等嵌入其中,则可以扩展Word的功能,使开发者能够更加充分地利用Word资源,加快开发速度。
  开发Word应用程序常用的有以下几种编程语言:WordBasic、VBA(VisualBasicforApplications)和WordAPI。 尽管WordBasic和VBA功能强大,但作为简单修改Word的工具,多少有些大材小用。笔者认为,WordAPI是开发Word应用程序的首选工具,尤其是可以利用C语言代码的快速、高效和灵活的特点,而且可以使用WordBasic接口函数和Windows动态连接库编程环境,实现对Word功能的添加。
  WordAPI的使用方法
  WordAPI生成的是一个可在Word中直接运行的Word加载项,它是一个以WLL为扩展文件名的单机动态连接库。这种WLL是标准的Windows动态连接库的特殊形式。可以用任何一个创建WindowsDLL的环境来编译、链接和建立WLL。
  MicrosoftWordDevelopersKit(MSWord开发工具箱)中,提供了WordAPI的接口函数,下面分别加以介绍。
  1.Word加载项的启动和卸载函数
  (1)voidFARPASCALwdAutoOpen(shortDocID)
  在Word中加载WLL的同时,Word会自动执行这个函数。在执行过程中,函数wdAutoOpen完成以下几个任务:
  ·向Word登记WLL中定义的所有函数;
  ·将WLL中的操作命令添加到Word的主菜单、快捷菜单和工具条中;
  ·给WLL的操作命令指定快捷键;
  ·完成WLL功能的初始化(如:机器翻译、中文校对的词库读入等)。
  (2)voidFARPASCALwdAutoRemove(void)
  当WLL被卸载时,如果WLL程序中定义了wdAutoRemove(void)函数,Word将在卸载时执行这个函数。在该函数中,可以保存退出时我们定义功能函数生成的必要数据。
  2.Word加载项中的登记函数
  要想让Word中的某个主菜单项、快捷菜单项、工具条按钮或快捷键完成我们定义的某个函数,就必须在加载WLL时,先向Word登记我们的应用函数。WordAPI的接口函数CAPIRigister可以完成登记任务。该函数定义形式如下:
  shortCAPIRegister(shortDocID,LPUCHARlpszFunctionName,LPUCHARlpszDescription);
@@0541700.JPG;表1@@
  3.在Word中将加载函数添加到主菜单项、快捷菜单项、工具条按钮和快捷键中  在WLL中应用函数登记完成之后,就可以在主菜单、快捷菜单和工具条中添加自己的菜单项和快捷键。这些工作由下面的函数完AddButton、NewToolbar、ToolsCustomi
zeMenu、ToolsCustomizeMenuBar和ToolsCustomizeKeyboard。
  ·在Word工具条中添加一个按钮:
  shortCAPIAddButton(shortDocID,LPSTRlpszToolbar,shortcPosition,LP
STRlpszMacro,LPSTRlpszFace);
   *S在Word中添加新的工具条:
  shortCAPIAddToolbar(shortDocID,LPSTRlpszToolbar);
  ·在主菜单中添加新的菜单项:
  shortCAPIAddMenu(shortDocID,LPSTRlpszMenuName,shortPosition,shortMe
nuType);
  ·在菜单项中添加新的菜单命令:
  shortCAPIAddMenuItem(shortDocID,LPSTRlpszMenu,LPSTRlpszName,LPSTR
lpszMenuText,shortPosition,shortMenuType);
  ·定义一个新的快捷键:
  shortCAPIAddkey(shortDocID,shortkeyCode,LPSTRlpszName)。
  要想定义组合键的快捷键方式,就需把几个键在WordBasic中的代码数字的二进制进行按位‘或运算,将结果传递给第二个参数KeyCode。例如:快捷键CTRL S的KeyCode是(256OR83)=339。
  4.WordAPI调用WordBasic函数前,函数参数和返回值的数据缓冲区的建立Word中的所有字处理功能都可由对应的WordBasic函数来实现。正是利用这一点,在
WLL中可以通过调用WordBasic函数来实现对Word的定制。因此,必须利用WordAPI函数InitWCB设立调用WordBasic函数时传递参数与返回值的数据缓冲区。
  VoidInitWCB(WCBfar*lpwcb,shortretType,LPSTRlpBuffer,shortcBufferSize);
  InitWCB的参数说明如下:
@@0541701.JPG;表2@@
  例如,下面这段程序是获取所选区域的字符串字体情况:
  WCBwcb;//Word的参数和返回值传递的数据区
  short isbold;
  InitWCB(&wcb,TypeShort,NULL,0);
  //设立传递WordBasic函数参数和返回值的数据区wcb
  WORDFUNCTION(wdBold);
  //调用WordBasic函数Bold()
  isbold=wcb.wdoprReturn.Short;
  //从数据区wcb中取出WordBasic函数Bold()的返回值
  5.WordBasic函数调用方法
  Word中的命令是与WordBasic函数一一对应的。因此,WordAPI可以通过接口函数用C语言直接调用WordBasic函数来实现Word命令。
  注意:在WordAPI中调用WordBasic命令函数名时均须在WordBasic函数名前加上2个英文字母‘wd,如:WordBasic函数Bold在WordAPI中的函数名应为wdBold。
  根据这些函数有无返回值与是否为响应对话框的情况,在WordAPI头文件basedef.h定义了三种调用方法:WORDCALL、WORDFUCTION和WORDDIALOG。
  ·若被调用的WordBasic函数无返回值,用WordAPI接口函数WORDCALL来调用,形式是:WORDCALL(函数名);
  ·若被调用的WordBasic函数有返回值,用WordAPI接口函数WORDFUNCTION来调用,形式是:WORDFUNCTION(函数名);
  ·若被调用的WordBasic函数是有关对话框操作,用WordAPI函数WORDDIALOG来调用,形式是:WORDDIALOG(函数名)。
  例如:WordBasic中,给所选区域字符标粗体的函数Bold与判断所选区域字符是否为粗体的函数Bold()的调用方法就不同:
  ·函数Bold是一个操作,无须返回值,所以调用形式是WORDCALL(wdBld)。
  ·函数Bold()是一个判断,必须有返回值,所以调用形式是WORDFUNCTION(wdBold);
  6.WordBasic函数参数的传递方法
  在调用WordBasic带参函数时,需要通过WordAPI特定接口函数来传递参数。同时,对不同类型的函数,参数的传递方法也不同。
  (1)逐个传递参数
  这种传递参数的方法适用于参数位置固定的函数,例如:WordBasic函数:
  MenuText$(Type,MenuNumber[,Context])
  其中的三个参数是按次序排列的。由于WordAPI调用WordBasic函数方式是函数名作为WORDCALL、WORDFUCTION和WORDDIALOG的参数,无法一次添加WordBasic函数参数,所以传递WordBasic函数参数时需要在InitWCB函数设置数据缓冲区后,依次通过数据缓冲区传递参数,第一个赋给Type,第二个赋给MenuNumber,如果有第三个参数则赋给Context。
  在向这类函数传递参数时,根据待传递参数数据类型的不同,有以下4个函数可以选用
  ·传递short型参数的函数:
  voidAddShortParam(WCBfar*lpwcb,shortShortVal);
  ·传递long型参数的函数:
  voidAddLongParam(WCBfar*lpwcb,longLongVal);
  *S传递double型参数的函数:
  voidAddDoubleParam(WCBfar*lpwcb,doubleDoubleVal);
  ·传递字符串参数的函数:
  voidAddStringParam(WCBfar*lpwcb,LPSTRlpStr);
  下表是上面4个函数参数的说明:
@@0541702.JPG;表3@@
  例如,下面部分程序的作用是给所选区域字符串着绿色:
  InitWCB(&wcb,TypeShort,NULL,0);
  AddShortParam(&wcb,4);
  //4是绿色在Word中的标识,将一个short参数放//入参数缓冲区
  WORDCALL(wdCharColor);
  //调用WordBasic函数CharColor
  (2)传递指定参数
  这种传递参数的方法适用于参数有标识名指明的函数。这种函数的参数有定义了的标识,传递时没有次序问题。例如:WordBasic中插入空表的函数TableInsertTable:Ta
bleInserTable[.ConvertForm][,.NumberColumns][,.NumRows][,.InitialColWidth][
,.Wizard][,.Format][,.Apply] 因此,向TableInserTable函数传递参数时,只需指明哪一个标识即可。这种情况一般用于具有较多参数的函数。
  在向这类函数传递参数时,与上面的类似,也是根据参数数据类型的不同,有以下4个函数可以选用:
  ·voidAddShortDlgField(WCBfar*lpwcb,shortShortVal,shortFieldId,shor
tfMode);
  ·voidAddLongDlgField(WCBfar*lpwcb,longLongVal,shortFieldId,shortf
Mode);
  ·voidAddDoubleDlgField(WCBfar*lpwcb,doubleDoubleVal,shortFieldId,s
hortfMode);
  ·voidAddStringDlgField(WCBfar*lpwcb,LPSTRlpStr,shortFieldId,shortf
Mode,shortcBufferSize);
  下表是上面4个函数参数的说明:
@@0541703.JPG;表4@@
  其中,传给FieldId的所有标识名都已在WORDAPI文件wdfid.h中被定义了。
  下面的例子是要在光标所在位置插入一个4*12的空表:
  InitWCB(&wcb,TypeShort,NULL,0);
  AddStringDlgField(&wcb,"4",fidNumColumns,fMode,0);
  AddStringDlgField(&wcb,"12",fidNumRows,fMode,0);
  WORDCALL(wdTableInsertTable);
  上面的fidNumColumns和fidNumRows是在WordAPI文件wdfid.h中定义的参数标识名。调用函数AddStringDlgField,将表的行数"4"和列数"12"直接传给WordBasic的函数TableInsertTable的两个参数NumColumns和NumRows。
  注意:在WordAPI文件wdfid.h中被定义了的函数参数的标识名是与WordBasic函数的参数标识名一一对应的,但不同的是,WordAPI的参数标识名是在WordBasic的参数标识名前加了‘fid构成的。如:WordBasic的函数TableInsertTable有两个参数是NumColumns和NumRows,那么,在WordAPI中的参数标识名就应是fidNumColumns和fidNumRows。
  创建WLL的程序框架
  本文给出一个用WordAPI完成的完整WLL框架,来实现如下图所示Word中的修改。@@0541704.JPG;图1加载WLL模板后的Word界面图@@
  编者注:源程序发表在本报WWW站点上,地址:http://www.computerworld.com.cn/
98/skill/default.htm。欢迎访问!
  在Word中加载或卸载WLL
  经过编译、链接生成DLL文件(动态连接库文件)后,必须将文件的扩展文件名.dll改为.wll,以便在加载WLL时能被Word正确识别为Word加载项。
  将自己编写的WLL加载到Word中有以下几种方法:
  ·模板方式加载:在Word中主菜单‘文件中找到‘模板,进去后按下‘添加按钮,选中自己编写的WLL模板文件(文件扩展名为wll)后‘确定,加载WLL即可完成,如下图所示。
  ·打开文件方式加载:像打开一般的Word文档一样,打开WLL模板文件,即可完成加载

  ·Word自动完成加载:将WLL模板文件复制..\windord\startup\目录下,像Word中的常用模板一样,在启动Word时,Word会自动将WLL模板文件加载到Word中。
  卸载WLL的方法只有一种:在Word中主菜单‘文件中找到‘模板,将‘共用模板及加载项框中‘translate.wll前的复选钮钩掉后‘确定,卸载WLL的工作即可完成。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·填充图案的定义和创建_autocad教程
·提高网页下载速度的网页制作方法二则_心得技巧教程
·解密.htm.html.shtm.shtml的区别与联系_心得技巧教程
·介绍三种网页播放器好代码_心得技巧教程
·div不是万能膏药_心得技巧教程
·打开新的窗口与保住页面的referrer_心得技巧教程
·用vb设计更换屏幕保护的程序_visualbasic教程
·了解库搜索路径和命令搜索过程_autocad教程
·做web2.0网站可以参考的十九条规则_心得技巧教程
·robots.txt和robots meta标签_心得技巧教程

最新文章
·经典收藏:网页页面常用的特殊符号_心得技巧教程
·用html和css写出漂亮正规的blog_心得技巧教程
·网站页面的均衡规划与选择_心得技巧教程
·一个网友观点:两年以来使用div排版的经验_心得技巧教程
·photoshop制作“非主流”彩虹色调照片_photoshop教程
·禁止查看网页源代码方法总结_心得技巧教程
·左右图片循环滚动停顿一下后继续_心得技巧教程
·图片左右循环连续滚动代码,解决marquee的留白问题 _心得技巧教程
·zend framework 1.0正式版即将发布_php文摘
·网页中各度量单位的比较_心得技巧教程


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号