在Word中嵌入应用程序(2)

2008-02-23 06:54:54来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


   (1) 逐个传递参数
   这种传递参数的方法适用于参数位置固定的函数,例如:Word Basic函数:
   MenuText$(Type,MenuNumber[,Context])
   其中的三个参数是按次序排列的。由于Word API调用Word Basic函数方式是函数名作为WORDCALL、WORDFUCTION和WORDDIALOG的参数,无法一次添加Word Basic函数参数,所以传递Word Basic函数参数时需要在InitWCB函数设置数据缓冲区后,依次通过数据缓冲区传递参数,第一个赋给Type,第二个赋给MenuNumber,如果有第三个参数则赋给Context。
   在向这类函数传递参数时,根据待传递参数数据类型的不同,有以下4个函数可以选用
   ·传递short型参数的函数:
   void AddShortParam(WCB far *lpwcb, short ShortVal);
   ·传递long型参数的函数:
   void AddLongParam(WCB far *lpwcb, long LongVal);
   *S 传递double型参数的函数:
   void AddDoubleParam(WCB far *lpwcb, double DoubleVal);
   ·传递字符串参数的函数:
   void AddStringParam(WCB far *lpwcb, LPSTR lpStr);
   下表是上面4个函数参数的说明:
@@0541702.JPG;表3@@
   例如,下面部分程序的作用是给所选区域字符串着绿色:
   InitWCB(&wcb,TypeShort,NULL,0);
   AddShortParam(&wcb,4);
   //4是绿色在Word中的标识, 将一个short参数放//入参数缓冲区
   WORDCALL(wdCharColor);
   //调用Word Basic函数CharColor
   (2) 传递指定参数
   这种传递参数的方法适用于参数有标识名指明的函数。这种函数的参数有定义了的标识,传递时没有次序问题。例如:Word Basic中插入空表的函数TableInsertTable: Ta
bleInserTable [.ConvertForm][,.NumberColumns][,.NumRows][,.InitialColWidth][
,.Wizard][,.Format] [,.Apply]  因此,向TableInserTable函数传递参数时,只需指明哪一个标识即可。这种情况一般用于具有较多参数的函数。
   在向这类函数传递参数时,与上面的类似,也是根据参数数据类型的不同,有以下4个函数可以选用:
   ·void AddShortDlgField(WCB far *lpwcb,short ShortVal,short FieldId,shor
t fMode);
   ·void AddLongDlgField(WCB far *lpwcb,long LongVal,short FieldId,short f
Mode);
   ·void AddDoubleDlgField(WCB far *lpwcb,double DoubleVal,short FieldId,s
hort fMode);
   ·void AddStringDlgField(WCB far *lpwcb,LPSTR lpStr,short FieldId,shortf
Mode,short cBufferSize);
   下表是上面4个函数参数的说明:
@@0541703.JPG;表4@@
   其中,传给FieldId的所有标识名都已在WORD API文件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是在Word API文件wdfid.h中定义的参数标识名。调用函数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中的修改。@@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的工作即可完成。

上一篇: 使用VBA-Excel97绘图
下一篇: 用VB5直接控制Excel 97

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:用RND()函数加密

下一篇:获取鼠标在屏幕上的位置