lightwell:杨老师,为什么组件里调用Fire_Result而客户端程序里被调用的却是raw_Fire_Result?
(发表于2005-9-2 8:22:00)
zlx54411:杨老师问一下,多重继承人们一般不提倡使用,但为什么COM里用的很多呢??
(发表于2005-9-2 9:27:00)
fastxyf:回调接口方式,客户端是不是只有在C++语言才能用?
如果客户端是VB什么的是不是只能用连接点?
(发表于2005-9-2 11:48:00)
rejacky:杨老师,接收数据这里好高深啊,看不明白啊
(发表于2005-9-2 16:06:00)
杨老师:to
[lightwell]:因为经过 #import 引入类型库后,接口函数会用异常方式包装为直接返回计算结果的方式,它使用了原接口函数名称,而原函数则被改为rew_方式。你可以在输入完 #import 后,编译。然后打开 tlh 文件,就可以看到具体的包装方式了。
[zlx54411]:一个组件可以有多个接口,而如果一个接口是一个基类的话,则多个接口正好用多重继承方式来表示更为简单合理
[fastxyf]:回调接口方式,可以被VB使用。(可以被任何编译型语言使用)
[rejacky]:好的,我以后尽量再努力写的更自然,更简单,更易理解的方式
(发表于2005-9-2 20:53:00)
zhpok:[lightwell]:我刚开始也感觉迷惑,后来我做了个尝试,给ICallBack添加了个新方法First_Result2,编译,然后再编译客户端程序,出错了,终于明白了import会自动按照杨老师说的那样产生了tlh文件,而又在CSink实现文件中找不到rew_First_Result2函数的实现,所以提示出错,这样就明白了...
(发表于2005-9-5 15:33:00)
zhpok:杨老师;我想问一下,(1)这个例子能否用在DCom中? (2)如果我设计一个项目管理50个数据对象(如学生记录),在service里面读取到内存中,那么这些数据如何传递给客户?通过数组吗?如果通过数组,以后对象增加了属性,造成客户端和服务端数据不匹配了怎么办? 真迷茫啊
(发表于2005-9-5 15:36:00)
嗅嗅:先夸奖了再看,前阵子由于登录不了,看到好了也不能表达出来,很郁闷,现在可以说话了,再次表示感谢!!!
(发表于2005-9-7 11:25:00)
maque:杨老师:这里的调用机制是不是跟“观察者”模式有点儿相似啊?
(发表于2005-9-16 14:07:00)
lip03:杨老师,能不能讲一节习题课呀,把之前您留过的作业大体上讲讲,哪怕只是讲讲思路,该用哪些函数也行呀。
另外就是对杨老师的佩服了,杨老师竟然能把这么难的东西讲的这么通俗易懂,真是佩服,佩服。
(发表于2005-9-16 15:18:00)
superdai:看明白了,真的很有用。
送句候老大的话给你:
尔曰浅显
彼曰艰深
唯其深入
方能浅出
(发表于2005-9-27 15:47:00)
一个非IT专业的中专生:前面几个章节我都可以一次看明白,这一篇我看了两遍了稍有收获,等会下载代码来看看或许豁然开朗,谢谢杨老师
(发表于2006-11-13 19:00:00)
JAMESBONE:怎么源代码编译出来的是一个DLL文件啊?
各位能否指教下?谢谢
(发表于2006-12-14 18:43:00)
wine818:怎么我的客户端程序编译时不会说有没实现的虚函数阿?是不是编译时的设置不对?请高手指教
(发表于2006-12-23 19:47:00)
tang1007:讲得很好,谢谢
(发表于2007-1-10 9:15:00)
mengjianwo:杨老师,您好。您的示例程序似乎有点问题。我启动了超过10个USE1,分别与COM组件EVENT1连接,可是都成功了,并没有10个的限制阿。后来又查了下,发现每个USE1 连接的似乎都是一个新的组件,每个新的组件都是空的,所以返回的dwCookie都是1 。
(发表于2007-1-18 13:40:00)
urus_liu:有一点我有点疑义:
STDMETHODIMP CEvent1::Add(long n1, long n2)
{
long nResult = n1 + n2;
for( int i=0; i<10; i++)
{
if( m_pCallBack[i] ) // 如果回调接口有效
m_pCallBack[i]->Fire_Result( nResult );
// 则发出事件/通知
}
return S_OK;
}
是不是应该改为
STDMETHODIMP CEvent1::Add(long n1, long n2,long dwCookie)
{
long nResult = n1 + n2;
if( dwCookie<1 || dwCookie>10 )
return E_INVALIDARG;
if( NULL == m_pCallBack[ dwCookie - 1 ] )
return E_INVALIDARG;
m_pCallBack[dwCookie-1]->Fire_Result( nResult );
return S_OK;
}
上面的dwCookie应该由客户端传入,因为它已经从Advise中得到了这个dwCookie,从而保证最终结果被正确的对象得到.
(发表于2007-3-28 17:26:00)
polarcrab:终于注册上了,说声谢谢,讲得非常好!
(发表于2008-10-11 13:20:00)
..........................................................................
--------------------next---------------------