如何在一个类型库中一个com对象的方法直接调用另外一个对象的方法
以前使用过最原始的方式。
现在使用smart pointer反而把原始的方法忘了??
先谢了!!
问题点数:50、回复次数:14Top
1 楼phonlee(not a bird,but ...)回复于 2003-06-04 14:52:49 得分 0
UP!!Top
2 楼zzyx(菜农)回复于 2003-06-04 15:53:05 得分 0
看不懂Top
3 楼phonlee(not a bird,but ...)回复于 2003-06-04 16:04:40 得分 0
以前我做的项目:
系统分成几层:
例如: data.dll user.dll fee.dll
user.dll用户管理组件要调用data.dll
中的方法,只要import这个dll(data.dll)
就可以使用其中的对象的方法
现在,因为项目很小。我在一个dll中封装了多个对象。
Test1.dll:包括TT1 TT2
在TT2的test方法中调用TT1.test
Top
4 楼phonlee(not a bird,but ...)回复于 2003-06-04 16:06:06 得分 0
微软的adodb类型库就是一个例子。
但是不知道他如何做的。Top
5 楼skybblue(天蓝)回复于 2003-06-04 18:12:26 得分 5
在你的user的idl文件包含data的idl文件,应该可以吧!Top
6 楼phonlee(not a bird,but ...)回复于 2003-06-04 21:46:56 得分 0
UP
Top
7 楼phonlee(not a bird,but ...)回复于 2003-06-04 21:50:14 得分 0
to skybblue(天蓝):
我的2个组件在一个dll中,
也就是说描述都在同一idl文件中
现在一个组件的接口实现要去调另外一个组件的方法。
// Cyy2
STDMETHODIMP Cyy2::test()
{
////-〉〉这里调用yy1.test
return S_OK;
}
不知道如何声明和创建对象了。
Top
8 楼phonlee(not a bird,but ...)回复于 2003-06-04 22:06:49 得分 0
微软的ado对象模型
就是打包于一个dll中的。
例如
而且其中有这样的方法。 _Recordset* Execute(
[out, optional] VARIANT* RecordsAffected,
[in, optional] VARIANT* Parameters,
[in, optional, defaultvalue(-1)] long Options);
这个是command的方法。
不知道如何调用自己的dll中的组件,
有什么注意要点??
Top
9 楼zzyx(菜农)回复于 2003-06-05 08:31:15 得分 10
原来如此。
就跟普通客户端调用另外一个组件的接口一样嘛,没有区别。
在合适的位置声明接口指针,你建议使用CComPtr模版
合适的位置CreateInstance
合适的位置调用->DoSomething
别忘记释放
Top
10 楼phonlee(not a bird,but ...)回复于 2003-06-05 09:11:22 得分 0
普通客户端调用另外一个组件的接口
有哪些方式, 我以前都是
#import "test.dll"
然后就可以直接使用了,很方便。
Top
11 楼zzyx(菜农)回复于 2003-06-05 09:25:51 得分 30
两个基本的做法:
#include "Your接口类.h"
CComPtr<IYourObj> m_spObj;
m_spObj.CoCreateInstance(...);
m_spObj->....
或者
IYourObj* m_pObj;
CoCreateInstance(...,&&ppUnk);
ppUnk->QueryInterface(IID_YourObject,&m_pObj);
m_pObj->...
Top
12 楼xiaohedou(小河豆(充电中.18%.))回复于 2003-06-05 13:40:43 得分 5
看样子,你是个老手了!怎么还会有这样的问题哪?放松一下!就是这样.
在A中创建B的实例(CoCeateInstance),然后使用这个实例.zzyx(菜农) 说的对.注意:'.'和'->'.
m_spObj.CoCreateInstance(...);
m_spObj->....Top
13 楼phonlee(not a bird,but ...)回复于 2003-06-05 14:36:36 得分 0
各位有没有使用过vb写组件的client
今天的问题太奇怪了
居然
ttt(yy) '--失败
ttt yy '--成功
QQ:5165504
多个朋友!!!
Top
14 楼phonlee(not a bird,but ...)回复于 2003-06-05 14:37:25 得分 0
详细看:
http://expert.csdn.net/Expert/topic/1879/1879612.xml?temp=.6184656Top



