65.9K
CodeProject 正在变化。 阅读更多。
Home

Internet Explorer 的 RSS 阅读器插件

starIconstarIconstarIconstarIconstarIcon

5.00/5 (11投票s)

2007年6月25日

CPOL

4分钟阅读

viewsIcon

321851

downloadIcon

1294

这是一个用于 Internet Explorer 的工具栏,它显示来自互联网的 RSS 信息。

引言

IE 的 RSS 阅读器插件是一个开源项目。

关于 RSS

RSS 是 Really Simplified Syndication 的缩写,它是用于内容聚合的标准 XML 格式。许多网站(如 CNN 或其他新闻网站)都有不同的版块。但读者并不总是能方便地访问和阅读这些版块中的新闻,所以他们会以 XML 的形式发布该版块的更新。他们发布的 XML 格式是标准化的,这种格式称为 RSS。所有这一切的好处是,如果我对来自世界体育新闻感兴趣,我不再需要访问某个网站的体育版块,而是只需将相关网站(在本例中是 CNN)发布的 RSS 链接提供给我的 RSS 阅读器(RSS 阅读器是一种能够解释和以可读格式显示 RSS 的特殊软件)。这正是我们设计的工具栏所做的事情。

关于 Internet Explorer 的 RSS 插件

此插件实际上是 Internet Explorer 的一个工具栏。它会显示来自已提供链接的 RSS 新闻。可以通过配置对话框来配置 RSS 链接。

用户指南

  1. 在 Internet Explorer 中选择工具栏。
  2. 如果您安装的工具栏不可见,则需要将其显示出来。为此,请选择“视图”->“工具栏”菜单。您可以在那里看到 RSS Reader 工具栏,并按如下方式选择该工具栏:

    Selecting the toolbar from the Internet Explorer

  3. 查看新闻
  4. 查看新闻非常简单。只需单击您添加的按钮(默认情况下,有五个按钮显示来自 CNN-IBN 新闻频道的报道)。如果相应的 XML 文件已加载,则可以看到新闻,如下所示。只需将鼠标悬停在相应的菜单项上,即可在气球状工具提示中查看该项目的说明。

    Screenshot - screen2.png

  5. 修改设置
  6. RSS Reader 插件在可见按钮的类型以及它获取数据的链接方面是完全可定制的。单击 RSS Reader... 按钮(工具栏上的第一个按钮)将弹出如下所示的配置对话框:

    Setting dialog Box

关于代码

此项目包含一些有趣的 código 片段,每个人都可以将其用作示例。本节将介绍这些 código 片段。(本节适合初学者;如果您已经是 Windows 编程方面的专家,可以跳过本节。)

  1. 动态创建工具栏按钮
  2. 在此工具栏中,按钮通过提供的设置对话框动态创建和删除。

  3. 创建酷炫的属主绘图菜单
  4. 显示新闻的窗口(见截图)实际上是一个菜单。此菜单是属主绘图的。

  5. 在菜单项上创建“热点”
  6. 请看最后一个菜单项。有两个条目:Next(下一页)、Prev(上一页)。现在,当用户单击菜单项时,只会生成一条消息;通过光标位置来识别单击的是菜单项的哪个部分。但仅凭光标位置是不够的。我们无法预测 Next 和 Prev 的有效区域是什么,因为我们无法知道菜单将显示在哪里。因此,我获取了菜单本身的句柄,并使用 MapWindowPoints() Win32 API 转换了坐标。

  7. C++ XML 解析
  8. 我使用了 TinyXML 进行 XML 解析。它目前是 C++ 中最好、最易用的 XML 解析器。

  9. 进程间通信
  10. 工具栏与 RSS Fetcher 进程通信,所有从互联网获取 RSS 的功能都交给该进程处理。

要求

我使用了 MS Visual Studio 2005,您还需要 WTL 8.0 才能编译此项目。WTL 8.0 可以在互联网上免费获得。

致谢

  • Erik Thompson - 使用 ATL 对象向导创建 desk-bands。
  • Anders Molin 的 AmHttpUtilities。
  • TinyXML - 此项目托管在 SourceForge 上。

更新

  • [7/5/2007]
    • RRPRssFetcher.exe 中移除了一些内存泄漏,但仍有一些残留 :-)
    • 已移除“配置设置”对话框的一些问题。
    • 现在,RRPRssFetcher 编译成功,所有依赖文件都已包含在源代码中 [请参见下面 此讨论串]。
© . All rights reserved.