• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊

急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊
描述:

这段时间我在使用VC和ATL COM做一个word的插件,基本上是遵照徐景江的几篇文章做的框架,但是现在我发现了好几个问题:
1,我在Add-ins的OnConnection方法中生成的工具条按钮和菜单,在OnDisConnection方法中不知道怎么将这些按钮和菜单去掉,按钮还没有什么问题,我可以拖出来关闭了事,但是菜单则会在每次运行插件就会添加一个菜单项,导致了菜单中多出了很多的项,怎么办呢?有没有什么方法可以在OnDisconnection方法中释放菜单和工具条,而且我好像发现OnDisconnection方法根本没有用,我用MessageBox测试根本就不会显示,这是什么回事呢?
2,按照徐景江的例子,我是用写注册表的方式是的插件可以每次自动在word启动时候加载,但是我发现了一个奇怪的现象,每次我重新编译插件时候(同时也就重新注册了插件),插件就会自动加载,但是我把word关闭之后再次打开,插件就没有自动加载,我必须手动的加载才行,不知道这是为什么,我在程序的.reg文件中设定插件的LoadBehavior是0x00000003(自动加载),但是每次插件运行一次之后注册表中的表项就变成了0x00000002,这是什么回事呢,象金山词霸这样的插件是怎么样实现的呢?
3,我的插件需要自己做一个按钮来打开一个word文档,我的插件程序中首先在OnConnection中得到word的应用程序变量:
STDMETHOD(OnConnection)(IDispatch * Application, ext_ConnectMode ConnectMode, IDispatch * AddInInst, SAFEARRAY * * custom)
{
CComPtr < Office::_CommandBars> spCmdBars;
// Word应用接口_Application
CComQIPtr<MSWord::_Application> spApp(Application);
ATLASSERT(spApp);
m_spApp=spApp;
//................................
//
           }
然后在我的按钮的事件中使用如下代码来打开一个word文档:
CComQIPtr<MSWord::Documents> documents=m_appWord->GetDocuments();
CComQIPtr<MSWord::_Document> doc;
COleVariant vFileName(fileName,VT_BSTR);
COleVariant covTrue((short)TRUE),covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
doc=documents->Open(&vFileName,&covFalse,&covFalse,&covFalse,&covOptional,&covOptional,&covOptional,&covOptional,&covOptional,&covOptional,&covOptional,&covOptional);
结果word异常退出,每次都是这样,是我的智能指针出错了吗?这个问题非常关键,我实在是没辙了,哪位大虾看过来,帮帮忙,谢谢


解决方案1:

2、你的插件应该是和其他插件的CLSID冲突了,才会导致你说的那些情况的发生,建议你新建一个工程,这样会自动生成新的CLSID,每次就会自动加载;
3、打开文档没有你那么费事,下面代码就可以打开了。
   CComVariant Var(m_strSourceFile);//CString m_strSourceFile;
   m_spApp->Documents->Open(&Var);

解决方案2:

1.OnDisconnection在你的头文件到底有没有映射到?
2.你注册表是否没写正确,导致每次都要重新写?
3.documents->Open的参数可能没有设置对
以上请详细对照例子程序,或查看MSDN的VB代码


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 急求救:请用VC做过office插件的兄弟们过来帮帮忙,好几个难解的问题啊

相关文章

  • 2017-06-04 一个串口的例子,是用VC60写的,在MVS2005下函数不一样了,请高手指教!
  • 2017-06-05 线程的结束问题
  • 2017-06-04 请问在ActiveX容器中如何激活ActiveX控件,使它能接受消息而不能编辑
  • 2017-06-05 无法转换unsignedshort转为BSTR的错误
  • 2017-06-05 为什么我一用静态编译就不能使程序正常运行呢?
  • 2017-06-04 这个简单的问题怎么解决呀
  • 2017-06-05 线程的空闲时间处理
  • 2017-06-05 静态库中MALLOC的问题
  • 2017-06-04 狂送100分我有一个第三方做的COM组件,是不可见的,即不是ACTIVEX类型的,我把它封装到一个我自己的COM组件中,它有自己的事件,但我怎
  • 2017-06-04 activemovie中那个nextPrevious按钮

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 求救,COMJSCComSafeArray问题,我已经按论坛中的方法试验了但最终还是得到一个objecterror
    • 求教使用ATL编写组件时的编译错误!
    • 您的程序需要加壳吗?请联系我
    • 如何向一个窗口发送组合件的消息?
    • vc能否调用c#编写的DLL???
    • 如何在不影响前台任务的情况下每5秒发送一条消息?
    • 如何转换通过命令行参数或是环境变量获得句柄?
    • Web上ActiveX退格键问题
    • 菜鸟问题:为什么接口也能CoCreateInstance?
    • 创建了一个线程,却不执行,不知道怎么回事

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有