修改 ATL DHTML 控件

ATL 控件向导提供起始代码,以便生成和运行控件,这样就可以了解如何在项目文件中编写方法,以及 DHTML 如何使用调度方法调用控件的 C++ 代码。 可以将任何调度方法添加到接口。 然后,可以在 HTML 资源中调用方法。

修改 ATL DHTML 控件

  1. 类视图中,展开控件项目。

    请注意,以“UI”结尾的接口有一种方法 OnClick。 不以“UI”结尾的接口没有任何方法。

  2. 将名为 MethodInvoked 的方法添加到不以“UI”结尾的接口。

    此方法将添加到控件容器中用于容器交互的接口,而不是 DHTML 用来与控件交互的接口。 只有容器才能调用此方法。

  3. 在 .cpp 文件中查找 stubbed-out 方法,并添加代码以显示消息框,例如:

    ::MessageBox(NULL, _T("I'm invoked"), _T("Your Container Message"), MB_OK);
    
  4. 仅在此时间添加另一个调用 HelloHTML的方法,将其添加到以“UI”结尾的接口。在 .cpp 文件中查找 stubbed-out HelloHTML 方法,并添加代码以显示消息框,例如:

    ::MessageBox(NULL, _T("Here's your message"), _T("HelloHTML"), MB_OK);
    
  5. 将第三种方法 GoToURL 添加到不以“UI”结尾的接口。通过调用 IWebBrowser2::Navigate 来实现此方法,如下所示:

    m_spBrowser->Navigate(CComBSTR(L"www.microsoft.com"), NULL, NULL, NULL, NULL);
    

    可以使用方法 IWebBrowser2,因为 ATL 提供指向 .h 文件中该接口的指针。

接下来,修改 HTML 资源以调用所创建的方法。 将添加三个按钮来调用这些方法。

修改 HTML 资源

  1. 解决方案资源管理器中,双击 .htm 文件以显示 HTML 资源。

    检查 HTML,尤其是对外部 Windows 调度方法的调用。 HTML 调用项目的 OnClick 方法,参数指示控件 (theBody) 的正文以及要分配 ("red") 的颜色。 方法调用后面的文本是按钮上显示的标签。

  2. 添加另一种 OnClick 方法,仅更改颜色。 例如:

    <br>
    <br>
    <BUTTON onclick='window.external.OnClick(theBody, "white");'>Refresh</BUTTON>
    

    此方法将创建一个标记为“刷新”的按钮,用户可以单击该按钮将控件返回到原始白色背景。

  3. 添加对所创建 HelloHTML 方法的调用。 例如:

    <br>
    <br>
    <BUTTON onclick='window.external.HelloHTML();'>HelloHTML</BUTTON>
    

    此方法将创建一个标记为 HelloHTML 的按钮,用户可以单击该按钮以显示 HelloHTML 消息框。

现在可以生成和测试修改后的 DHTML 控件

另请参阅

对 DHTML 控件的支持