标识 DHTML 控件项目的元素

大多数 DHTML 控件代码与为任何 ATL 控件创建的代码完全相同。 为了对泛型代码有一个基本的了解,请完成 ATL 教程的学习,并阅读创建 ATL 项目ATL COM 对象基础知识部分。

DHTML 控件与任何 ATL 控件都是类似的,但以下方面除外:

  • 除了控件实现的常规接口外,它还实现了一个附加接口,用于在 C++ 代码与 HTML 用户界面 (UI) 之间通信。 HTML UI 使用此接口调用 C++ 代码。

  • 它为控件 UI 创建 HTML 资源。

  • 它允许通过成员变量 m_spBrowser 访问 DHTML 对象模型,这是一个 IWebBrowser2 类型的智能指针。 使用此指针可以访问 DHTML 对象模型的任何部分。

下图说明了 DLL、DHTML 控件、Web 浏览器和 HTML 资源之间的关系。

Diagram of the elements of a DHTML control project.

注意

此图上的名称都是占位符。 HTML 资源名称和控件上公开的接口均基于你在 ATL 控件向导中为其分配的名称。

在此图中,元素如下:

  • 我的 DLL:使用 ATL 项目向导创建的 DLL。

  • DHTML 控件 (m_spBrowser):使用 ATL 对象向导创建的 DHTML 控件。 此控件通过 Web 浏览器对象的接口 IWebBrowser2 访问 Web 浏览器对象及其方法。 除了控件所需的其他标准接口之外,控件本身还公开了以下两个接口。

    • IDHCTL1:控件公开的接口,仅供容器使用。

    • IDHCTLUI1:用于在 C++ 代码和 HTML 用户界面之间通信的调度接口。 Web 浏览器使用控件的调度接口来显示控件。 可以通过调用 window.external,再加上你想调用的这个调度接口的方法名称,从控件的用户界面调用此调度接口的各种方法。 可以通过构成此控件 UI 的 HTML 中的 SCRIPT 标记访问 window.external。 有关在资源文件中调用外部方法的详细信息,请参阅从 DHTML 调用 C++ 代码

  • IDR_CTL1:HTML 资源的资源 ID。 在本例中,它的文件名是 DHCTL1UI.htm。 DHTML 控件使用 HTML 资源,其中包含标准的 HTML 标记和外部窗口调度命令,你可以使用文本编辑器进行编辑。

  • Web 浏览器:Web 浏览器根据 HTML 资源中的 HTML 来显示控件 UI。 指向 Web 浏览器 IWebBrowser2 接口的指针在 DHTML 控件中可用,以允许访问 DHTML 对象模型。

ATL 控件向导生成的控件在 HTML 资源和 .cpp 文件中都带有默认代码。 你可以编译并运行向导生成的控件,然后在 Web 浏览器或 ActiveX 控件测试容器中查看控件。 下图显示了默认的 ATL DHTML 控件,其中有三个按钮显示在测试容器中:

ATL DHTML control.

请参阅创建 ATL DHTML 控件,开始生成 DHTML 控件。 请参阅使用测试容器测试属性和事件,了解有关如何访问测试容器的信息。

另请参阅

支持 DHTML 控件