首页

文章

如何从一个 OCX 获取 IDispatch Excel 或 Word 文档的

发布网友 发布时间:2022-03-17 04:25

我来回答

2个回答

懂视网 时间:2022-03-17 08:46

uptodate临床助手有很多资料能学习,可以很大的帮助医学院学生,那么应该如何进行注册呢,接下来就给朋友们分享一下具体的操作方法。

第一步:打开uptodate软件。

第二步:点击注册。

第三步:根据提示完成注册,注意只有一个月试用期,以后需要购买。

以上便是针对该问题所整理出来的具体操作步骤,希望可以帮助到需要的朋友。

热心网友 时间:2022-03-17 05:54

  执行步骤的示例

  创建名为 OffCntrDisp 的新 MFC ActiveX 控件向导应用程序。
  COleControl 派生类中添加下面的成员变量:
  char m_szDocName[512];
  IDispatch *m_pDocDisp;

  注: m_szDocName 保存包含我们的控制的文档的名称并且 m_pDocDisp 是该文档的 IDispatch 接口。

  COleControl 派生类定义中的末尾添加以下项:
  // Interface Maps.
  protected:
  // IoleObject.
  BEGIN_INTERFACE_PART(MyOleObject, IOleObject)
  INIT_INTERFACE_PART(COffCtlDispCtrl, MyOleObject)
  STDMETHOD(SetClientSite)(LPOLECLIENTSITE);
  STDMETHOD(GetClientSite)(LPOLECLIENTSITE*);
  STDMETHOD(SetHostNames)(LPCOLESTR, LPCOLESTR);
  STDMETHOD(Close)(DWORD);
  STDMETHOD(SetMoniker)(DWORD, LPMONIKER);
  STDMETHOD(GetMoniker)(DWORD, DWORD, LPMONIKER*);
  STDMETHOD(InitFromData)(LPDATAOBJECT, BOOL, DWORD);
  STDMETHOD(GetClipboardData)(DWORD, LPDATAOBJECT*);
  STDMETHOD(DoVerb)(LONG, LPMSG, LPOLECLIENTSITE, LONG, HWND,
  LPCRECT);
  STDMETHOD(EnumVerbs)(IEnumOLEVERB**);
  STDMETHOD(Update)();
  STDMETHOD(IsUpToDate)();
  STDMETHOD(GetUserClassID)(CLSID*);
  STDMETHOD(GetUserType)(DWORD, LPOLESTR*);
  STDMETHOD(SetExtent)(DWORD, LPSIZEL);
  STDMETHOD(GetExtent)(DWORD, LPSIZEL);
  STDMETHOD(Advise)(LPADVISESINK, LPDWORD);
  STDMETHOD(Unadvise)(DWORD);
  STDMETHOD(EnumAdvise)(LPENUMSTATDATA*);
  STDMETHOD(GetMiscStatus)(DWORD, LPDWORD);
  STDMETHOD(SetColorScheme)(LPLOGPALETTE);
  END_INTERFACE_PART(MyOleObject)

  DECLARE_INTERFACE_MAP();

  这将重写您的自定义 MyOleObject 与 IOleObject COleControl 的默认实现。

  COleControl 派生类的构造函数中添加以下代码:
  m_pDocDisp = NULL;
  紧随其后 OffCntrDispCtl.cpp 中的以下行:
  IMPLEMENT_OLECTLTYPE(COffCntrDispCtrl, IDS_OFFCNTRDISP,

  _dwOffCntrDispOleMisc)

  添加以下代码:
  BEGIN_INTERFACE_MAP(COffCntrDispCtrl, COleControl)
  INTERFACE_PART(COffCntrDispCtrl, IID_IOleObject, MyOleObject)
  END_INTERFACE_MAP()

  此操作,请在步骤 3 中所做的修改以及覆盖 COleControl 的 IOleObject。

  第 5 步中添加的代码,下面添加以下代码:
  static char buf[8192];
  static void DoMsg(char *msg) {
  ::MessageBox(NULL, msg, "Message", MB_SETFOREGROUND);
  }

  static void DoErr(char *msg, long err) {
  static char errBuf[8192];
  sprintf(errBuf, "%s, Error: %ld (%08lx)", msg, err,err);
  ::MessageBox(NULL, errBuf, "Error", MB_SETFOREGROUND);
  }

  这些都是以后用于显示邮件的有用例程。

  将粘贴的所有以下代码在您的 OffCntrDispCtl.cpp 文件的末尾:
  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::SetHostNames(LPCOLESTR
  pwApp, LPCOLESTR pwObj)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);

  // Convert OLESTR into ASCII string.

  WideCharToMultiByte(CP_ACP, 0, pwObj, -1, pThis->m_szDocName,
  512, NULL, NULL);

  // Get IDispatch.
  pThis->GetDocDispatch();

  // Test it out by getting the document name.
  pThis->TestDispatch();

  return S_OK;
  }

  STDMETHODIMP
  COffCntrDispCtrl::XMyOleObject::SetClientSite(LPOLECLIENTSITE
  pClientSite)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.SetClientSite(pClientSite);
  }

  STDMETHODIMP
  COffCntrDispCtrl::XMyOleObject::SetColorScheme(LPLOGPALETTE plp)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.SetColorScheme(plp);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetMiscStatus(DWORD
  dwAspect, DWORD* pdwStatus)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetMiscStatus(dwAspect, pdwStatus);
  }

  STDMETHODIMP
  COffCntrDispCtrl::XMyOleObject::EnumAdvise(LPENUMSTATDATA*
  ppenumAdvise)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.EnumAdvise(ppenumAdvise);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::Unadvise(DWORD
  dwConnection)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.Unadvise(dwConnection);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::Advise(LPADVISESINK
  pAdvSink, DWORD* pdwConnection)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.Advise(pAdvSink, pdwConnection);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetExtent(DWORD
  dwDrawAspect, LPSIZEL lpsizel)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetExtent(dwDrawAspect, lpsizel);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::SetExtent(DWORD
  dwDrawAspect, LPSIZEL lpsizel)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.SetExtent(dwDrawAspect, lpsizel);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetUserType(DWORD
  dwFormOfType, LPOLESTR* ppszUserType)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);

  return pThis->m_xOleObject.GetUserType(dwFormOfType,
  ppszUserType);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetUserClassID(CLSID*
  pClsid)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetUserClassID(pClsid);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::IsUpToDate()
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);

  return pThis->m_xOleObject.IsUpToDate();
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::Update()
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.Update();
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::EnumVerbs(LPENUMOLEVERB*
  ppenumOleVerb)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);

  return pThis->m_xOleObject.EnumVerbs(ppenumOleVerb);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::DoVerb(LONG iVerb, LPMSG
  lpmsg, LPOLECLIENTSITE pActiveSite, LONG lindex, HWND hwndParent,
  LPCRECT lprcPosRect)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.DoVerb(iVerb, lpmsg, pActiveSite,
  lindex, hwndParent, lprcPosRect);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetClipboardData(DWORD
  dwReserved, LPDATAOBJECT *ppDataObject)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetClipboardData(dwReserved,
  ppDataObject);
  }

  STDMETHODIMP
  COffCntrDispCtrl::XMyOleObject::InitFromData(LPDATAOBJECT
  pDataObject, BOOL fCreation, DWORD dwReserved)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.InitFromData(pDataObject, fCreation,
  dwReserved);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::GetMoniker(DWORD
  dwAssign, DWORD dwWhichMoniker, LPMONIKER *ppmk)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetMoniker(dwAssign, dwWhichMoniker,
  ppmk);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::SetMoniker(DWORD
  dwWhichMoniker, LPMONIKER pmk)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.SetMoniker(dwWhichMoniker, pmk);
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::Close(DWORD
  dwSaveOption)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.Close(dwSaveOption);
  }

  STDMETHODIMP
  COffCntrDispCtrl::XMyOleObject::GetClientSite(LPOLECLIENTSITE*
  ppClientSite)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.GetClientSite(ppClientSite);

  }

  STDMETHODIMP_(ULONG) COffCntrDispCtrl::XMyOleObject::Release()
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.Release();
  }

  STDMETHODIMP_(ULONG) COffCntrDispCtrl::XMyOleObject::AddRef()
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.AddRef();
  }

  STDMETHODIMP COffCntrDispCtrl::XMyOleObject::QueryInterface(REFIID
  iid, LPVOID* ppvObj)
  {
  METHOD_MANAGE_STATE(COffCntrDispCtrl, MyOleObject)
  ASSERT_VALID(pThis);
  return pThis->m_xOleObject.QueryInterface(iid, ppvObj);
  }

  这是您的 IOleObject,通常将委托其调用默认 COleControl 的 IOleObject 实现,除 SetHostNames() 之外的所有实现。补漏白,SetHostNames(),并存储该文档的名称插入控件的位置。

  遗憾的是,Microsoft PowerPoint 不能调用此方法,因此,此示例将不会使用该产品。但是,Microsoft Powerpoint 是单个服务器,因此您可以使用 GetActiveObject() 来唯一获得 IDispatch 指针。
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 腾讯会议共享屏幕没声音怎么办 微信寄快递怎么取消订单_取消订单方法介绍 300兆宽带用什么路由器好? 请问高分子井盖具体材料有那些?谢谢 井盖骨架有哪些材料 ...一个女主是空姐,她和男主第一次在去巴黎飞机上相遇,约定如果三次... 找一部电影 记得结局是主角上了私人飞机,然后和空姐,可能是情人... 360借条怎么开通? 脚踝系红绳是什么意思 痤疮 痘痘 黑头 粉刺必看的终结绿色治疗 女性脸上有痤疮不能吃皮蛋吗 前事不忘,__ 只可意会,___ 皮之不存,__ __,不为瓦全,__ __,不见泰山... 薪酬:以薪酬战略撬动企业变革内容简介 领先型薪酬策略在实践中的应用 领先型薪酬策略什么是领先型薪酬策略 什么是领先型薪酬策略 第三方支付都有什么 银行用车抵押贷款 雌雄眼的女人不能惹雌雄眼的女人旺夫吗 修缮,与修理的区别 小弟想买一款索尼的笔记本。麻烦各位推荐一下。颜色必须是黑色的,键盘... SONY的笔记本电脑硬盘大概多钱一个 先说谢谢了 sony的笔记本ea38ec 到底用的是什么牌子的内存 尔必达?威刚... 在Sony Style上面买机子,除了鼠标,包,其他东西都全么? 有谁知道SONY的最新最小VGN-UX的笔记本好无好用?介绍下基本功能~!_百度... 怎样让孩子主动找老师补课? 表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 锻炼颈椎的几个动作 水多久能结冰 冰能在多长时间内形成 如何获得uptodate可以个人开通吗 mac怎么访问mac 共享文件夹 大侠,请指教小弟 苹果电脑和PC电脑怎么设置相互共享文件?? 如何将mac和iphone共享文件夹 异地如何用两台mac实现屏幕共享 如何将两台mac连接起来 Mac电脑怎么访问共享文件夹 怎样在mac 上设置共享文件夹 两台mac pro如何更快的传输文件 mac 怎么共享文件 Mac电脑双系统如何设置共享文件夹 两台电脑用一根网线怎么共享文件 mac 如何在两台苹果电脑上建立一个共享文件夹? 两台苹果电脑之间怎么设置文件共享 Win10怎么切换平板电脑模式 笔记本电脑win10怎么从平板模式中退出来 win10电脑怎么切换平板模式 win10平板模式怎么改成电脑模式 win10平板模式怎么切换过来 win10平板模式怎么切回电脑模式 MAC OS X如何升级到10.7Lion oppo设为私密照片后怎么查看 怎样查看私密照片oppo oppo照片私密怎么查看 qq怎么快速扫二维码 用手机QQ怎样扫二维码 怎么用手机QQ扫码? 怎么用qq扫描二维码 手机qq怎么扫描二维码 qq如何扫图片二维码 怎样用qq扫快手的二维码 怎么使用QQ扫二维码 qq如何扫二维码? 用QQ怎么扫描二维码? QQ里面扫二维码怎么扫 新版qq怎么扫描二维码啊 qq怎么扫描二维码 怎么设置手机qq二维码扫描二维码 win7系统ie提示证书过期怎么办 win7系统 打开网页提示安全证书错误怎么回事?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com