网站首页  词典首页

请输入您要查询的计算机术语:

 

术语 CConnectionPoint
释义 CConnectionPoint

CObject
 └CCmdTarget
    └CConnectionPoint

类CConnectionPoint定义了与OLE对象通信的一类特殊接口,它称为“连接点”(Connection Point)。一般的OLE接口实现并向外提供OLE控件的功能,而连接点则实现了外向的接口,从而能初始化其它对象的动作,如激活事件并改变通知。
一个连接由两部分组成:调用接口的对象,称为源端;实现接口的对象,称为接收端(槽)。源端提供连接点使接收端和它建立连接。通过连接点机制,源对象可以取得接收端对一些成员函数的实现的指针。例如,要激活一个由接收端实现的事件,源端可以调用接收端的相应实现。
缺省时,从类COleControl派生出的类实现了两个连接点:一个用于事件,一个用于属性变化通知。它们分别用于激活事件和通知接收端(如控件的包容器)属性发生了变化。MFC也为实现更多的连接点提供了支持。在用户派生的控制类中的每个附加的连接点,都必须声明一个“连接部分”(connection part)来实现连接点。实现附加连接点,也需要在控制类中声明一个“连接映射”(connection map)。
下面的例子实现了Sample OLE控件上一个简单的连接映射和连接点,它包括两部分代码:第一部分声明了连接映射和连接点;第二部分实现了该映射和连接点。第一部分要插入到控件类protected部分下的声明中:
// Connection point for ISample interface
BEGIN_CONNECTION_PART( CSampleCtrl, SampleConnPt )
    CONNECTION_IID( IID_ISampleSink )
END_CONNECTION_PART( SampleConnPt )

DECLARE_CONNECTION_MAP( )
宏BEGIN_CONNECTION_PART和END_CONNECTION_PART声明了一个嵌入类XSampleConnPt(从CConnectionPoint继承来),该类实现了这个连接点。如果想覆盖CConnectionPoint的成员函数或者增加新的成员函数,要在这两个宏之间声明。例如,上例中的宏CONNECTION_IID覆盖了CConnectionPoint::GetIID。
代码的第二部分要插入到控制类的实现文件(.CPP)中。它实现了连接映射,包括附加的连接点SampleConnPt:
BEGIN_CONNECTION_MAP( CSampleCtrl, COleControl )
    CONNECTION_PART( CSampleCtrl, IID_SampleSink, SampleConnPt )
END_CONNECTION_MAP( )
插入这些代码之后,Sample OLE控件就为接口ISampleSink提供了一个连接点。
典型地,连接点支持多播,即向连接到同一个接口的多个接收端广播。下面的例子通过向每个接收端发送实现多播。
void CSampleCrtl::CallSinkFunc( )
{
  const CPtrArray* pConnections = m_xSampleConnPt.GetConnections( );
  ASSERT( pConnections !=NULL );
  int cConnections = pConnections->GetSize( );
  ISampleSink* pSampleSink;
  for( int i=0 ; i<cConnections; i++)
  {
    pSampleSink = (ISampleSink*)(pConnections->GetAt(i));
    ASSERT(pSamplesink != NULL);
    pSampleSink->SinkFunc( );
  }
}
在本例中使用CConnectionPoint::GetConnections检索SampleConnPt连接点上的所有连接。然后对每个活动的连接调用ISampleSink::SinkFunc。
要了解有关使用CConnectionPoint的更详细的信息,请参阅联机文档“Visual C++程序员指南”中的“连接点”部分。
#include <afxctl.h>


CConnectionPoint类的成员

操作
GetConnections检索连接映射中的所有连接点

可覆盖的函数
GetContainer检索控件的包容器,其中包括了连接映射
GetIID检索连接点的接口ID
GetMaxConnections检索连接点支持的最大连接点个数
OnAdvise设置或中断连接时由主程序调用
随便看

 

MFC类库中文详解手册包含4274条MFC类库参考词条,基本涵盖了Microsoft基本类库中的类、全局函数、全局变量和宏的内容,是计算机编程的有利工具。

 

Copyright © 2004-2023 Winrtm.com All Rights Reserved
京ICP备2021023879号-40 更新时间:2024/10/6 12:32:23