关于怎么使用Office提供的COM接口编程的步骤我这里就不多说了,网上已经有很多文章讲述过了。我这里要讲的是,对于这种在编程接口的基础上的编程,要想灵活地运用它们,最重要的莫过于熟悉它的各种各样的函数了,把它的所有函数看一遍,你就会对你在程序中所要完成的功能怎么实现心里有个数。对于Office的COM接口,我们希望它们能有像MSDN一样的的函数的详细解释,最好还有例程。幸运的是,确实有这样的文档,不过是在Office的安装光盘中,而且所有的解释和例子都是Basic语言的,不过对于我们VC程序员来说,看懂那些也是不成问题的,不是吗?
要想得到这些文档,需要在安装Office时安装“Office工具”里的“Visual Basic帮助”,然后在Office帮助文档目录里找到以VBA开头的CHM文件,比如VBAWRD9.chm(我用的是Office2000)是Word的VBA帮助,VBAXL9.chm是excel的VBA帮助,VBAPPT9.chm是Power Point的VBA帮助。在这些文档中有所有COM接口的属性与方法,大部分都有示例。下面以在Word文档中插入图片为例,在VBAWRD9.chm有这样的提示:
AddPicture 方法
对于 Shapes 对象:本方法从现有文件创建一张图片并返回一个 Shape 对象,该对象代表新图片。
对于 InlineShapes 对象:本方法从现有文件创建一个图片并返回一个 InlineShape 对象,该对象代表新图片。
语法 1
expression.AddPicture(FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height, Anchor)
语法 2
expression.AddPicture(FileName, LinkToFile, SaveWithDocument, Range)
expression 语法 1:必需。该表达式返回一个 Shapes 对象。
语法 2:必需。该表达式返回一个 InlineShapes 对象。
FileName String 类型,必需。指定要创建对象的文件名。如果忽略本参数,则使用当前文件夹。
LinkToFile Variant 类型,可选。如果此属性设置为 True,则将 OLE 对象与创建该对象的文件链接。如果设置为 False,则令该 OLE 对象成为该文件的独立副本。默认值为 False。
SaveWithDocument Variant 类型,可选。如果此属性为 True,则将链接的图片与文档一起保存。默认值为 False。
Left, Top Variant 类型,可选。指定新图片的左上角相对锁定标记的位置(以磅为单位)。
Width, Height Variant 类型,可选。指定图片的宽度和长度,以磅为单位。
Anchor Variant 类型,可选。指定图片的锁定区域。如果指定了 Anchor,则其将出现在锁定区域第一段的开头。如果忽略此参数,则自动放置锁定标记,而图片参照页面的上边界和左边界定位。
Range Variant 类型,可选。指定一个区域,OLE 对象放置在该区域的文字中。如果该区域未折叠,那么图片将覆盖该区域。如果忽略此参数,则自动放置图片。
转换成VC的代码就是:
CFileDialog dlg(TRUE);
if(dlg.DoModal() == IDOK)
{
_Document doc = m_app.GetActiveDocument();
InlineShapes is = doc.GetInlineShapes();
COleVariant varTrue(short(TRUE), VT_BOOL);
COleVariant varFalse(short(FALSE), VT_BOOL);
COleVariant varOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
is.AddPicture(dlg.GetPathName(), varFalse, varTrue, varOptional);
}
|