手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

在Word中嵌入应用程序

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
  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将在卸载时执行这个函数。在该函数中,可以保存退出时我们定义功能函数生成的必要数据。
  2. Word加载项中的登记函数

  要想让Word中的某个主菜单项、快捷菜单项、工具条按钮或快捷键完成我们定义的某个函数,就必须在加载WLL时,先向Word登记我们的应用函数。Word API的接口函数CAPIRigister可以完成登记任务。该函数定义形式如下:

short CAPIRegister(short DocID, LPUCHAR lpszFunctionName, LPUCHAR lpszDescription);

  3. 在Word中将加载函数添加到主菜单项、快捷菜单项、工具条按钮和快捷键中  在WLL中应用函数登记完成之后,就可以在主菜单、快捷菜单和工具条中添加自己的菜单项和快捷键。这些工作由下面的函数完成

AddButton、NewToolbar、ToolsCustomi
zeMenu、ToolsCustomizeMenuBar和ToolsCustomizeKeyboard。
  ·在Word工具条中添加一个按钮:

 short CAPIAddButton (short DocID, LPSTR lpszToolbar, short
     cPosition, LP
     STR lpszMacro ,LPSTR lpszFace ); 
    *S在Word中添加新的工具条:

short CAPIAddToolbar(short DocID,LPSTR lpszToolbar);  
  ·在主菜单中添加新的菜单项:

short CAPIAddMenu(short DocID,LPSTR lpszMenuName,short
      Position,short Me
      nuType);     
 ·在菜单项中添加新的菜单命令:

short CAPIAddMenuItem(short DocID, LPSTR lpszMenu, LPSTR lpszName
         ,LPSTR
         lpszMenuText,short Position, short MenuType);  
  ·定义一个新的快捷键:

short CAPIAddkey (short DocID, short keyCode, LPSTR lpszName)。  
  要想定义组合键的快捷键方式,就需把几个键在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函数时传递参数与返回值的数据缓冲区。

Void InitWCB (WCB far *lpwcb,short retType, LPSTR lpBuffer,short cBufferSize);
  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命令。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!