通过 DHTML 调用 C++ 代码
DHTML 控件可以托管在容器中,例如测试容器或 Internet Explorer。 请参阅使用测试容器测试属性和事件,了解有关如何访问测试容器的信息。
托管控件的容器使用普通控件接口与控件通信。 DHTML 使用以“UI”结尾的调度接口与 C++ 代码和 HTML 资源通信。 在修改 ATL DHTML 控件中,可以练习添加这些不同接口调用的方法。
若要查看从 DHTML 调用 C++ 代码的示例,请使用 ATL 控件向导创建 DHTML 控件,并检查头文件和 HTML 文件中的代码。
在头文件中声明 WebBrowser 方法
若要从 DHTML UI 调用 C++ 方法,必须将方法添加到控件的 UI 接口。 例如,ATL 控件向导创建的头文件包含 C++ 方法 OnClick
,该方法是向导生成的控件的 UI 接口的成员。
检查控件的 .h 文件中的 OnClick
:
STDMETHOD(OnClick)(IDispatch* pdispBody, VARIANT varColor)
第一个参数 pdispBody 是指向正文对象的调度接口的指针。 第二个参数 varColor 标识要应用于控件的颜色。
在 HTML 文件中调用 C++ 代码
在头文件中声明 WebBrowser 方法后,可以从 HTML 文件中调用方法。 请注意,在 HTML 文件中,ATL 控件向导插入三种 Windows 调度方法:三种 OnClick
方法用于调度消息以更改控件的背景色。
检查 HTML 文件中的方法之一:
<BUTTON onclick='window.external.OnClick(theBody, "red");'>Red</BUTTON>
在上面的 HTML 代码中,窗口外部方法 OnClick
称为按钮标记的一部分。 该方法有两个参数:theBody
和 "red"
,前者引用 HTML 文档的正文,后者指示单击按钮时控件的背景色将更改为红色。 标记后面的 Red
是按钮的标签。
有关提供自己的方法的详细信息,请参阅修改 ATL DHTML 控件。 有关 HTML 文件的详细信息,请参阅标识 DHTML 控件项目的元素。