vc++6.0安装教程 和office2003冲突吗?

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“专业文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取,非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取,具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档。

最近,我为一个客户写了一个Outlook2003的COM插件。当我为这个工程写代码的时候,我遇到了很多用C++无法解决的问题。对于一个初学者来说,用ATL编写插件是非常棘手的。网上大多数Office开发的例子都是VB/VBA相关的,几乎没有用ATL开发的。所以,我整理了一些知识,希望能够对大家有所帮助。

在这篇文章里的代码并没有进行优化,并且附带的例子可能有一些内存泄露,也会有一些COM实现上的不足。但为了使读者便于理解,我尽量使实现过程简单化。为了写这篇文章我花了很多时间,万一还存在什么错误,请给我发个邮件。

如果你是个COM/ATL的初学者,推荐你阅读

这篇文章将要讲述下面的技术:

  • 利用CDO查看消息的安全性
  • 利用CDO为Outlook项目添加自定义区域
  • 以编程方式定制条目的分组和分类
  • 以编程的方式利用MSI加载CDO

在这个教程中,我们关注的是<groupby> 和 <orderby>两个节点。这里我只是自定义分组功能,你可以重用相同的代码来自定义分类功能。

parser修改XML。你也可以使用任何方便的方法。代码如下:

下面添加在OnFolderChange函数中的代码实现了分组功能:

喔,打字打得好累 :O

好了,现在可以编译了,如果一切顺利,你的邮件将会被分成两个组。

我想这是才是本教程最值得大家期待的部分。比起钻研密码逻辑来说,大部分人更关心这个。

Amit Dey就“向菜单和工具栏添加新项”做了很多解释。如果你没有读过他的文章,先去读一下,因为我将不再详细解释CommandBars这类东西。

首先,增加私有成员变量以存储CommandBars对象。打开头文件OAddin.h,添加下面代码:

然后在OAddin.h中声明一个回调函数: 打开cpp文件,增加这个函数的定义:

现在,从源接口接收事件接口的通道已经打通。接收事件的最佳地方是OnConnection,回到OnConnection函数,增加以下代码。如上所述,我们可以从Explorer对象得到CommandBars。

OK!当一个CommandBar需要更新时,OnUpdate事件就激发了。所以我们现在需要的是找到右键菜单,往里面添加新项。右键菜单具有一个固定的名字:Context Menu。我们可以枚举CommandBars来找到Context Menu。

好了,现在最重要的一件事是,CommandBar对象是被Outlook锁定的。为了调用它的Add方法,必须取消对CommandBarControl对象的保护,否则对Add的访问将会失败。我们可以用CommandBar的Protection属性来取消这个保护。

到此为止,编译这个工程,Outlook鼠标右键菜单就会出现一个新项。但是在向它添加一个句柄之前,它是无效的。所以,为了接收事件,让我们回到OAddin类的头文件,使这个类从_CommandBarButtonEvents继承。

然后再次用ATL_SINK_INFO结构描述回调参数。打开add-in对象的头文件OAddin.h,在最顶部加入下面一行代码:

打开这个类的cpp文件,在顶部加入下面代码:

现在可以接收事件了。当新的CommandBarControl生成时接收事件:

好了,编译工程,看看菜单项是怎么工作的。点击一次,邮件会自动分类,再次点击,邮件就不再分类了。

如何改变菜单状态使它为选中状态呢?

喔,还有很多要写的 :S,并且还有很多要读的。

早些时候当我为一个客户开发解决方案时,一个Microsoft MVP(我指的不是你;))对我说,无论是向右键菜单里添加新项,还是改变菜单项为选中状态,都是不可能的,我必须放弃这些功能把工程交付客户。后来,我用Outlook Spy并参照Amit Dey的文章搞定了,虽然有些棘手,但并不是不可能的。

编译这个工程,一个完整的插件就完成了。它可以按照安全性将邮件分类。

如何编程利用MSI安装CDO

可以在程序中利用MSI安装CDO。为了在C++工程中使用MSI,必须向工程导入MSI.dll:

为了安装CDO,MSI需要功能名字和产品代码。产品代码可以从传给OnConnection函数的Outlook的Applicaton对象得到。下面是MSI的代码:

在这个教程中,我尽力给出了最多的解释。

提供的例子是用C++写的,我曾经用VB实现。结果并不是最优的,而且你可能会发现一些COM实现上的不足。欢迎批评指正。谢谢!

在VC2003中新建一程序,选择项目--》添加类--》MFC--》类型库中的MFC类。

然后选择“文件”单选按钮,默认选择的是“注册表”单选按钮。

从“位置”的“...”按钮(浏览)中选择word安装路径中的MFWORD.OLB文件,

然后在“列表”中就会显示所有的类型,选择需要使用的类型,添加到右侧。

完成后,会把选择的类的头文件添加到你的项目中,这样你就可以使用这些类

首先要包含头文件,即需要的类所在的.h文件。

以下为使用这些类进行读取Word中表格数据的实现:

我要回帖

更多关于 vc++6.0安装教程 的文章

 

随机推荐