• 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 > 麻烦各位:包容器中创建一个OLE组件有哪些方法?

麻烦各位:包容器中创建一个OLE组件有哪些方法?

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

佚名通过本文主要向大家介绍了ole组件,ole,ole超市,ole超市官网,访问ole注册表错误等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 麻烦各位:包容器中创建一个OLE组件有哪些方法?
描述:

一般书上的例子都是
         COleInsertDialog dlg;
if (dlg.DoModal() != IDOK)
return;
         ....
然后再利用dlg创建,请问还有别的方法吗,我查MSDN好像还有几个函数,但是参数非常多,搞不太轻,烦劳高手予以解答,最好有例子代码,多谢!我的信箱:wen_pc@126.com


解决方案1:

CDocument *pdoc = GetDocument
CxxxCntItem *pItem = new CxxxCntItem(pdoc)
pItem->CreateNewItem(clsid);
其中CxxxCntItem用向导生成的一个函数,clsid是你要创建组件的clsid。

解决方案2:

void CWebOfficeView::EmbedAutomateDoc(void)
{
BeginWaitCursor();
CDC* pDC;
pDC=GetDC();
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
CWebOfficeOleClientItem* pItem=NULL;
TRY
{
CWebOfficeDoc* pDoc=GetDocument();
ASSERT_VALID(pDoc);
pItem=new CWebOfficeOleClientItem(pDoc);
ASSERT_VALID(pItem);
CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
AfxThrowMemoryException();
if(m_FileName.GetLength()==8)
{
if(!pItem->CreateNewItem(clsid))
AfxThrowMemoryException();
}
else
{
if(m_FileName.Find("Http://",0)!=-1)
{
CString m_DocPath=DownTemplate(m_FileName);
if(!pItem->CreateFromFile(m_DocPath,clsid))
{
AfxThrowMemoryException();
}
DeleteFile(m_DocPath);
}
else
{
//if(!pItem->CreateFromFile(DownTemplate(m_FileName),clsid))
if(!pItem->CreateFromFile(m_FileName,clsid))
{
AfxThrowMemoryException();
}
}
}
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW,this);
m_pSelection=pItem;
lpDisp=pItem->GetIDispatch();
_Application_Word m_WordApp;
_Document_Word m_WordDoc;
m_WordDoc.AttachDispatch(lpDisp,TRUE);
m_WordDoc.Activate();
m_WordApp=m_WordDoc.GetApplication();
Window_Word m_WordWindow;
m_WordWindow=m_WordDoc.GetActiveWindow();
m_WordWindow.SetDisplayHorizontalScrollBar(TRUE);
m_WordWindow.SetDisplayVerticalScrollBar(TRUE);
m_WordWindow.SetDisplayRulers(TRUE);
Pane_Word m_WordPane;
m_WordPane=m_WordWindow.GetActivePane();
View_Word m_WordView;
m_WordView=m_WordPane.GetView();
Zoom_Word m_WordZoom;
m_WordZoom=m_WordView.GetZoom();
m_WordZoom.SetPercentage((long)75);
if(m_VersionTrack.Find("VersionTrack",0)!=-1)
{
m_WordDoc.SetTrackRevisions(FALSE);
}
else
{
m_WordDoc.SetTrackRevisions(TRUE);
}
/*
if(m_DocStatus.Find("DocStatus",0)!=-1)
{
pItem->DeactivateUI();
}
else
{
//
}
*/
m_WordZoom.ReleaseDispatch();
m_WordView.ReleaseDispatch();
m_WordPane.ReleaseDispatch();
m_WordWindow.ReleaseDispatch();
m_WordDoc.ReleaseDispatch();
m_WordApp.ReleaseDispatch();
pDoc->UpdateAllViews(NULL);
}
CATCH(COleException,e)
{
char strErrorBuf[255];
e->GetErrorMessage(strErrorBuf,255,NULL);
AfxMessageBox(strErrorBuf,MB_ICONINFORMATION);
if (pItem!=NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
}
END_CATCH
EndWaitCursor();
}

解决方案3:

I've no idea where you can get it, and I download it from our domain server.
I can give you a copy if you need it, please send me message and tell me your msn.

解决方案4:

// Call COM service to create a COPaper instance. We are not
    // aggregating it so we ask for its IPaper interface directly.
    hr = CoCreateInstance(
           CLSID_DllPaper,
           NULL,
           CLSCTX_INPROC_SERVER,
           IID_IPaper,
           (PPVOID)&m_pIPaper);


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

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

  • 如何开发一个OLE组件,可以插入到OLE容器中使用比如插入CRichEditCtrl?
  • OLE和OLE2com组件,到底有什么不同?
  • 迷茫中:如何得到OLE组件的数据?
  • OLE文档,在收到组件改变的通知后,怎么不能实现重绘OLE文档
  • 麻烦各位:包容器中创建一个OLE组件有哪些方法?
  • 包容器中嵌入一个OLE组件时,如何不显示编辑界面,直接在包容器中显示出来???

相关文章

  • 2017-06-04 求救:如何通过COleDispatchDriver类的InvokeHelper()调用COM的方法
  • 2017-06-05 WaitForSingleObject怎么用,急
  • 2017-06-04 在自定义com组件中,没有选择SUPORTMFC,如何弹出信息框;如何把字符串转成大写字母
  • 2017-06-04 我在网页中嵌入一个ActiveX控件,如何设置该ActiveX的控件大小在IE的客户区中进行显示?
  • 2017-06-04 ATL无窗口控件在失去焦点时不显示控件图片
  • 2017-06-04 关于打印字体大小设置的问题,请大侠一定要救我!!
  • 2017-06-04 获得的ADO异常信息时有乱码,怎么解决?谢谢!
  • 2017-06-05 线程被无缘无故挂起waitreason显示为wairingforlpcreply
  • 2017-06-04 求助!!!我在VS2005XP平台下编译WTL71自带的Samples时,结果如下出错信息:不知道怎么解决!
  • 2017-06-05 多线程效率竟然低于单线程?

文章分类

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

最近更新的内容

    • 谢谢先!我用ATL实现一个组件,其中包含了两个接口,我需要在一个接口中使用另一个接口的方法,如何做???
    • 为什么必须在dll工程里调用一次在lib里为此dll定义的输出函数,编译后生成的dll才输出了这个函数???
    • activexVC调用可以,JS调用有问题
    • 如何实现将几个视频流写入一个文件
    • 关于开发可以支持“网络上传”的webactivex控件的提问?(端口问题,技术实现问题……)
    • activex控件中工具栏的位置设置?急?急?急?
    • 如何include调用DLL中的头文件我要用到DLL中定义的类和方法(立即给分)
    • pb调用evc写的atlcom如何传出字符串参数
    • 200分肯请高手,把一个图像处理的程序封装到一个dll中,源程序劳烦下载!
    • 初学有个对我来说好久也没有解决的问题来着有分

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

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