• 当前位置:首页>>VC语言>>VC基础教程>>理解超链接接口
  • 理解超链接接口
  •     在某些情况下,前面讨论的简单的超链接函数调用还显得不够用。例如,你可能想实现一个完整的浏览器,把它作为应用程序的一部分。另一种情形是,如果你想提供这些调用不支持的某些扩展功能,比如操作历史列表等,这时简单调用就显得不够用了。前面讨论的调用特别适用于只关心导航的情形。
        对任何ActiveX控件,都需要提供一些附加的接口,以便在应用程序中实现超链接。实际上有五个新接口,如下所述:
        IHLink(必选项) 这是ActiveX超链接接口的中心。它是一个提供了另一个需要进行超链接的应用程序所需的所有信息的接口,包括目标moniker(实际对象标识)、URL风格的字符串以及一个友好的名称。它还能提供其它类型信息,但创建简单的超链接一般不需要。所有简单链接都是通过Navigate方法完成的,它正是前面讨论的简单函数使用的方法。
         IHLinkTarget(可选项) 利用该接口可以在文档中定位或者下载其它信息。例如,该接口允许你在电子表格中指向特定单元格。IHLinkTarget还提供了一种将指向文档的IBrowseContext接口的指针传递给调用的应用程序的手段。应用程序可以链接到一个不提供支持该接口的某一文档,但也只能如此。
        IHLinkFrame(可选项) 记住,在OLE中,框架是OLE容器中的一个应用程序容器。它包含菜单和外部框。该接口允许框架维护与OLE容器(通常为某种文档)的联系。
        IHLinkSite(可选项) 这是管理超链接站点的接口。它有两项基本任务,并能提供并发服务。该接口的第一个主要任务是,获得对文档的IHLink对象的访问权。访问该对象能提供许多信息,如当前站点名。接口的第二个主要目的是,提供对客户机应用程序的反馈。例如,OnNavigationComplete方法能告诉客户机下载或其它任务已经结束。
        IBrowseContext(可选项) 应用程序通过该接口获得对浏览器环境对象的访问。所有浏览环境对象的全部工作就是追踪导航栈──即当前会话期间访问的站点。前文所述的IHLinkGoFoward()和IHLinkGoBack()函数正是根据该接口来完成它们的工作的。
        实际上,在这一组接口中有两级实现。我们认为第一级是应用程序,在这里是指浏览器。第二级是一个OLE容器,在这里是指文档。浏览器实现IHLinkFrame和IBrowseContext接口。这两个接口只会有一种情况发生,即浏览器要么实现它们、要么不实现。文档负责实现IHLinkTarget、IHLink和IHLinkSite接口。
        用接口术语来定义文档有点困难。文档的容器部分实现IHLinkTarget接口,所以,即使是处理一个包含多个对象的文档,你也只能看到其中之一。同样,无论文档包含多少对象,每个文档也只有一个HLinkSite接口。但你可以在一个文档中包含多个超链接。
        让我们快速浏览一下超链接。每个超链接都需要单独的IHLink接口,可以用四个函数来建立:IHLinkCreatFromMoniker( )、IHLinkCreatFromString( )、IHLinkCreatFromData()以及IHLinkQueryCreatFromData()。HLink 对象可以使用持久数据,也就是说控件必须实现一个IPersistStream接口。因为你可以从数据中创建一个HLink,所以就可能利用Clipboard来剪切,拷贝并粘贴它。另外,因为IHLink可以使用moniker,所以你可以指向任意类型OLE文档,包括那些一般不在浏览器中显示的文档,如Word for Windows文件。  

    [1]

  • 上一篇:使用URL Moniker
    下一篇:超链接基础