• 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 > 关于用mfc生成的程序,插入ole文档的两个问题

关于用mfc生成的程序,插入ole文档的两个问题

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

佚名通过本文主要向大家介绍了mfc ole,ole db提供程序,ole程序,oledb驱动程序,ole文档等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于用mfc生成的程序,插入ole文档的两个问题
描述:

1:
这段是MFC插入ole对象的
COleInsertDialog dlg;
if (dlg.DoModal(COleInsertDialog:ocObjectsOnly) != IDOK)
return;
BeginWaitCursor();
CRptDesginCntrItem* pItem = NULL;
TRY
{
// 创建与此文档相连接的新项
CRptDesginDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CRptDesginCntrItem(pDoc);
ASSERT_VALID(pItem);
// 通过对话框数据初始化该项
if (!dlg.CreateItem(pItem))
AfxThrowMemoryException();  // 任何异常都将导致该结果
ASSERT_VALID(pItem);
pItem->DoVerb(OLEIVERB_SHOW, this);
ASSERT_VALID(pItem);
// 作为任意用户界面设计,这会将选定内容
//  设置为插入的最后一项
// TODO: 重新实现选定内容,使其适合于您的应用程序
m_pSelection = pItem;   // 将选定内容设置为插入的最后一项
pDoc->UpdateAllViews(NULL);
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
EndWaitCursor();
运行没问题,我修改为不弹出对象框,直接插入EXCEL
BeginWaitCursor();
CRptDesginCntrItem* pItem = NULL;
TRY
{
// 创建与此文档相连接的新项
CRptDesginDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
pItem = new CRptDesginCntrItem(pDoc);
ASSERT_VALID(pItem);
CLSID  clsid;
HRESULT hr=CLSIDFromProgID(OLESTR("Excel.Application.11"),&clsid);
if(S_OK != hr) return 0;
//*****************这里修改为直接调用
ASSERT_VALID(pItem);
pItem->CreateNewItem(clsid);
pItem->DoVerb(OLEIVERB_SHOW, this);
ASSERT_VALID(pItem);
// 作为任意用户界面设计,这会将选定内容
//  设置为插入的最后一项
// TODO: 重新实现选定内容,使其适合于您的应用程序
m_pSelection = pItem;   // 将选定内容设置为插入的最后一项
pDoc->UpdateAllViews(NULL);
}
CATCH(CException, e)
{
if (pItem != NULL)
{
ASSERT_VALID(pItem);
pItem->Delete();
}
AfxMessageBox(IDP_FAILED_TO_CREATE);
}
END_CATCH
EndWaitCursor();
不同这处在于一个由于oledlg调用COleDocObjectItem::CreateNewItem()
修改的那段为
我直接调用pItem->CreateNewItem(clsid);
然后pItem->DoVerb(OLEIVERB_SHOW, this);就会抛出异常,对象链接段开。
我跟踪代码,没发现有什么不同啊?
2:如果excel作为ole插入后,能否在程序中控制它呢
CComQIPtr<MSExcel::_Application> pExcelApp;
//MSExcel::_ApplicationPtr;
m_pSelection->m_lpObject->QueryInterface(MSExcel::IID__Application,(void**) &pExcelApp);
ATLASSERT(pExcelApp);
这个得不到指针,如何能得到excel的指针呢


解决方案1:

1.
CLSID  clsid;
HRESULT hr = CLSIDFromProgID(L"Excel.Sheet",&clsid);
if( FAILED(hr) ) 
return;
2.
找IDispatch接口,msdn有例子


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

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

  • 能不能把mfc下的ole技术封装成com高手求救
  • 在VBA中调用OLE对象的方法可成功,但是在MFC中调用却总是失败?
  • OLE编程:MFC自动化控制PPT的错误,急求解决!!立刻给分!!
  • mfc中ole嵌入word,删除word对象时界面的刷新问题
  • mfc中,如何使用ole控件啊?
  • MFC使用OLE读取EXCEL数据到数组中的问题
  • MFC中OLE的初始化问题
  • 关于ole文档的问题,看了mfc,还是不懂
  • 关于用mfc生成的程序,插入ole文档的两个问题
  • 关于MFC的OLE,如何监听单元格,懂的来

相关文章

  • 2017-06-04 DCOM这里讨论吗?
  • 2017-06-04 一个弱弱的问题
  • 2017-06-04 求救:创建一个activex控件,如何连接数据库?
  • 2017-06-05 这段多线程的代码为何非法操作?
  • 2017-06-04 如何破解一个OCX控件???
  • 2017-06-04 HMODULE的问题!
  • 2017-06-05 如何在主程序下调用DLL,显示一非模式对话框!!
  • 2017-06-04 javascript能不能调用ActiveX带多个参数返回值的方法
  • 2017-06-05 进程通信问题,急!!
  • 2017-06-04 用过netants或者flashget么?右击时把网址传到程序中

文章分类

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

最近更新的内容

    • VC的SDKSDK编程中,不知"句柄"与"ID号"有何区别
    • 关于BSTR的问题(很急)
    • DCOM错误:“没有注册界面。。。”怎么解决?
    • 关于com与java的问题?
    • 用C++对网页自动化对象<textarea>内容赋值
    • BHOinvoke参数中pdispparams->rgvarg为什么在挂装HTML元素事件时为空呢?
    • directshow如何实现转换成AVI格式
    • 请问程序如何知道用户按的键是小键盘的数字键?
    • 背单词软件的问题
    • 问一个定义:std::vector<CTask>m_vTasks是什么意思?

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

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