用mfc写的activex控件如何实现对象模型,就像excel、word那样。没有人会吗?

yrb 2007-04-24 06:10:19
excel可以包括workbooks,worksheets等对象,我们用mfc写的控件如何做,才能实现这样的功能。
...全文
348 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxufeng 2007-04-26
  • 打赏
  • 举报
回复
继承吧!很简单的,跟c++差不多一个意思!
先写个接口a,弄几个方法和函数,再写个接口b;
编译一下,在b的类上右键选择Implement Interface,就会要你选择继承哪个接口的!
我不知道我说得对不对!
说实话,即使我说的不对,这个东西很有用的。做过ArcEngine的工具(ITool)开发就知道它可以用来做很多方便的应用!
yrb 2007-04-26
  • 打赏
  • 举报
回复
谢谢各位的帮助!!!
问题可能已经解决了,或者说原本就没有问题,庸人自扰。
帖子http://community.csdn.net/Expert/topic/5478/5478434.xml?temp=.1031
里描述我的那个做法应该是正确的,至少实现了我的目标。
在我的台式机和笔记本上同时出错让没有从本质上掌握com技术的我误以为存在这个问题。
可能是我的系统里安装的软件对ie有干扰导致了这个本不该出现的错误。我的笔记本和台式机里面安装的软件基本上一样。
今天我在一家单位的若干台xp的机器上测试,没有任何错误。
再找几台2000的机器测一下就能最终确定了。
再次谢谢各位的帮助,尤其是jiangsheng(蒋晟.Net[MVP]) 和jxufeng(玉龙猪) !
yrb 2007-04-25
  • 打赏
  • 举报
回复
可能是我没有表达清楚。这个我觉得不是包容或聚合。因为包容或聚合多数是指一个com组件包含另一个已经存在的com组件,而我是要给一个基于mfc的activex控件实现若干个接口,这些接口之间存在着层次关系,不是简单的并列。比方接口IA,包含一个返回接口IB的方法,接口IB包含一个返回接口IC的方法。
jxufeng 2007-04-25
  • 打赏
  • 举报
回复
你说的是com的继承和包容、聚合的问题吧!其实,就是面向对象思想而已,换了种说法而已!
NoBlank 2007-04-25
  • 打赏
  • 举报
回复
我觉得,用vb.net做最合适,其次是vc.net。
yrb 2007-04-25
  • 打赏
  • 举报
回复
先谢谢jiangsheng(蒋晟.Net[MVP])兄,我慢慢学习。
半瓶子水的人,做点东西真难,再加上自己苛求自己。
我本是一个delphi程序员,用delphi写了一个grid控件(vcl),总感觉delphi做的不是很好,用mfc重写,以前学习过vc。基本重写完成了(http://www.yfsoft.cn/soft/yfgrid.rar),却发现和脚本语言的互动上出现了问题,以前我不知道脚本语言不支持出接口。当然,我可以选择cell那样的做法,专门提供一些接口给脚本语言,追求完美的性格促使我用组件对象模型的方法为这个grid提供一个立体的接口。想当然的从CCmdTarget派生了几个类,做出了接口对象模型。可是这个grid控件(debug)在ie中运行时,总是断言错误, 在下面这个帖子里有详细的错误描述:http://community.csdn.net/Expert/topic/5478/5478434.xml?temp=.1031。我跟踪后,发现基于mfc的activex控件如果在vb、delphi等环境开发的程序中运行时,只有一个窗口AfxOleControlX,如果在ie中运行时却多出一个窗口AfxWndX,这个多出来的窗口背后是一个CReflectorWnd类的实例。这些都不要紧,要紧的是如果在这个activex控件中增加一个从CCmdTarget派生的类后,再在ie中运行的时候就在wincore.cpp中的AfxWndProc函数中出现ASSERT错误,我对引发这个错误的原因进行了探索,发现,如果没有加CCmdTarget的派生类,在ie关闭的时候,发给这个activex的控件的消息是WM_ENDSESSION,如果增加了,在这个消息的后面还发送一个WM_DESTROY消息,正是这个消息,引发了上诉错误。我猜想,在WM_ENDSESSION消息中,已经将控件类的对象销毁了,后一个消息来的时候,函数FromHandlePermanent(hWnd)已经无法返回这个窗口对象了,出现了错误。能力有限啊,无法对mfc的源码进行分析。
蒋晟 2007-04-25
  • 打赏
  • 举报
回复
support.microsoft.com/kb/168214
yrb 2007-04-24
  • 打赏
  • 举报
回复
用mfc开发activex控件,实现类似excel那样的组件对象模型。
NoBlank 2007-04-24
  • 打赏
  • 举报
回复
你是要实现word/excel里的操作,还是仅仅用mfc做出com组件?
CathySun118 2007-04-24
  • 打赏
  • 举报
回复
直接用ole的方法,调用Excel或word不好吗

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧