• 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开发基于excel的com的问题(用atl),分不够可以再添加!

挑战高手,关于用vc开发基于excel的com的问题(用atl),分不够可以再添加!

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

佚名通过本文主要向大家介绍了 挑战高手,关于用vc开发基于excel的com的问题(用atl),分不够可以再添加!等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 挑战高手,关于用vc开发基于excel的com的问题(用atl),分不够可以再添加!
描述:

我要实现的功能在vb里边时这样写的,
1.io_App.Workbooks(S_FileName).Sheets(S_SheetName).Range(sRange).Select
io_App.Workbooks(S_FileName).Sheets(S_SheetName).Pictures.Insert (sImageFile)
2.io_App.Workbooks(S_FileName).Sheets(S_SheetName).Shapes.AddTextbox(1, x, y, length, width).Name = s_TextName 
io_App.Workbooks(S_FileName).Sheets(S_SheetName).DrawingObjects(s_TextName).ShapeRange.Fill.Visible = 0 
在vc中,用classWizard,把excel中的所带的excel9.olb中的所有class加载了进来,上边第一个所要实现的功能就是向excel中指定的cell中插入图片,但是如何在sheets类与Pictures类之间建立关系呢?  第二个就是在sheet中增加图形,然后重新设置这个图形的属性,但是如何在sheets类与DrawingObjects类之间建立关系呢?   
这两者之间的关系,我怎么也建立不起来,望高人指点!一定给分!!


解决方案1:

开发基于com的自动化组件,不一定要用vc,既然有vb代码,直接开发一个基于vb的自动化组件岂不是更好。 
使用atl开发,一般不选support mfc,减小组件的大小。你用class wizard引入类型库,则一定要选上support mfc,否则编译不过去。其实,可以用import "excel.olb"代替。 
调用组件的属性,在vc的包裹类要用set/get方法,不能直接用xx.propertyName的方式。
出差几日耽误了 
你用sheets这种集合类得到的是IDispatch*,你要用DrawObjects对象attach. 
 
sheets是个集合类,item()方法是它的默认方法。Sheets(S_SheetName)等于sheets.item(s_sheetName)。你用item()方法得到IDispatch*,再用DrawObjects.attach()就能用了。

解决方案2:

#import 就是使用智能指针,用它可以代替使用classWizard-->From a Type Library
用法是
#import "C:\\Program Files\\Microsoft Office\\Office\\EXCEL9.OLB"
_WorksheetPtr 相当于 _Worksheet*
我看了一下,GroupObjects是隐藏的,你用classWizard-->From a Type Library可能看不到这个成员函数,
[id(0x00000459), hidden, helpcontext(0x00010459)]
HRESULT GroupObjects(
                [in, optional] VARIANT Index, 
                [in, lcid] long lcid, 
                [out, retval] IDispatch** RHS);
还有一个成员函数 OLEObjects
[id(0x0000031f), helpcontext(0x0001031f)]
HRESULT OLEObjects(
                [in, optional] VARIANT Index, 
                [in, lcid] long lcid, 
                [out, retval] IDispatch** RHS);
你都试试,看看用 "Pictures"做参数,那个能正常得回IDispatch接口


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

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

  • 挑战高手,关于用vc开发基于excel的com的问题(用atl),分不够可以再添加!

相关文章

  • 2017-06-04 初探:接口在COM中占什么位置?请有研究者进来畅谈
  • 2017-06-05 控件中两个对话框传值失败???
  • 2017-06-05 各位帮帮忙啊!怎么在我自己写的类里去获得子窗口的句柄。我写的是基于对话框的程序?
  • 2017-06-05 如何给另外一个进程发结束消息或者说如何获得另外一个进程的句柄?
  • 2017-06-04 怎样创建自己的对象然后嵌入到word对象里呢?
  • 2017-06-04 SDKXP2的例子RenderBehave无法编译
  • 2017-06-05 非常简单的问题,如何在MFC规则DLL里定义全局变量??我是不是很傻?:
  • 2017-06-05 使用dll导出类可以用Loadlibrary的方法调用吗?
  • 2017-06-04 在vc中怎样调用vb做的ActiveXDLL控件
  • 2017-06-05 RE:动态连接库问题

文章分类

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

最近更新的内容

    • 这个com为啥不能调用
    • 高光谱混合像元分解
    • 操纵execl关闭自动重算的问题
    • 简单问题,急~~~~网页中怎么取得接口方法中参数的接口指针~~~~~~~~~~内附代码
    • []请问C++有无非COM的接口编程技术?
    • 使用SINK_ENTRY_INFO宏时的问题:怎么知道宿主程序的DISPID?
    • 怎样在mfc中实现activex的方法的可选参数
    • Com好是好,我却???
    • 请问VC中有直接获得当前进程名的函数吗?
    • 用c语言编写守护进程问题

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

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