频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

用VC6.0编写Word插件(Office2K、XP、03)

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组
上一页 1 2 3 4 5 6 下一页 
访问 http://www.qqread.com/word/d349798.html

  这样一个Office插件的框架才算完成,你可以在OnConnection函数中加一些测试代码,看看有没有执行到,如果执行成功才能继续,否则检查上面的步骤有没有错误。

  第四步,同时需要import两个office的文件,一个是MSO.dll,另一个是MSWORD.OLB。这两个文件可以在以下位置找到(具体位置与office安装路径有关):

  C:Program FilesCommon FilesMicrosoft SharedOFFICE11

  C:Program FilesMicrosoft OfficeOFFICE11

  然后在stdafx.h中加入如下语句:

#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE11\mso.dll"
    
    rename_namespace("Office") named_guids,exclude("Pages")
using namespace Office;
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.olb" rename_namespace("VBE6")
using namespace VBE6;
#import "C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB" rename("ExitWindows","ExitWindowsEx")
#import "C:\Program Files\Microsoft Office\OFFICE11\MSWORD.OLB"
    
    rename_namespace("Word"), raw_interfaces_only, named_guids ,exclude("Pages")
using namespace Word;
加完以上代码以后一定要编译一下,看看是否能够成功。引入这两个文件的原因,主要是为了引入一些变量类型,为后面的创建UI作准备。

  最后一步,编写代码。在OnConnection加入如下代码:

   CComPtr < Office::_CommandBars> spCmdBars;
   CComQIPtr <Word::_Application> spApp(Application);
   ATLASSERT(spApp);
   HRESULT hr = spApp->get_CommandBars(&spCmdBars);
   if(FAILED(hr))
   return hr;
   ATLASSERT(spCmdBars);
   CComVariant vName("MyAddin");
   CComPtr <Office::CommandBar> spNewCmdBar;
   CComVariant vPos(1);
   CComVariant vTemp(VARIANT_TRUE);
   CComVariant vEmpty(DISP_E_PARAMNOTFOUND, VT_ERROR);
   spNewCmdBar = spCmdBars->Add(vName, vPos, vEmpty, vTemp);
   
   CComPtr < Office::CommandBarControls> spBarControls;
   spBarControls = spNewCmdBar->GetControls();
   ATLASSERT(spBarControls);
   
   CComVariant vToolBarType(1);
   CComVariant vShow(VARIANT_TRUE);
   CComPtr < Office::CommandBarControl> spNewBar;
   spNewBar = spBarControls->Add(vToolBarType, vEmpty, vEmpty, vEmpty, vShow);
   ATLASSERT(spNewBar);
    
   CComQIPtr < Office::_CommandBarButton> spCmdButton(spNewBar);
   ATLASSERT(spCmdButton);
    
   HBITMAP hBmp =(HBITMAP)::LoadImage(_Module.GetResourceInstance(),
   MAKEINTRESOURCE(IDB_BITMAP),IMAGE_BITMAP,0,0,LR_LOADMAP3DCOLORS);
    
   ::OpenClipboard(NULL);
   ::EmptyClipboard();
   ::SetClipboardData(CF_BITMAP, (HANDLE)hBmp);
   ::CloseClipboard();
   ::DeleteObject(hBmp);
    
   spCmdButton->PutStyle(Office::msoButtonIconAndCaption);
   hr = spCmdButton->PasteFace();
   if (FAILED(hr))
   return hr;
    
   spCmdButton->PutVisible(VARIANT_TRUE);
   spCmdButton->PutCaption(OLESTR("myAddin"));
   spCmdButton->PutEnabled(VARIANT_TRUE);
   spCmdButton->PutTooltipText(OLESTR("test1"));
   spCmdButton->PutTag(OLESTR("test1"));
   spNewCmdBar->PutVisible(VARIANT_TRUE);
    
   m_spCmdButton = spCmdButton;

  这样,再次打开word,就可以看到如图一所示的界面效果了。

更多文章 更多内容请看Office技巧专区软件插件专题,或进入讨论组讨论。
上一页 1 2 3 4 5 6 下一页 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章