修改 ATL DHTML 控件
ATL 控件向导提供起始代码,以便生成和运行控件,这样就可以了解如何在项目文件中编写方法,以及 DHTML 如何使用调度方法调用控件的 C++ 代码。 可以将任何调度方法添加到接口。 然后,可以在 HTML 资源中调用方法。
修改 ATL DHTML 控件
在类视图中,展开控件项目。
请注意,以“UI”结尾的接口有一种方法
OnClick
。 不以“UI”结尾的接口没有任何方法。将名为
MethodInvoked
的方法添加到不以“UI”结尾的接口。此方法将添加到控件容器中用于容器交互的接口,而不是 DHTML 用来与控件交互的接口。 只有容器才能调用此方法。
在 .cpp 文件中查找 stubbed-out 方法,并添加代码以显示消息框,例如:
::MessageBox(NULL, _T("I'm invoked"), _T("Your Container Message"), MB_OK);
仅在此时间添加另一个调用
HelloHTML
的方法,将其添加到以“UI”结尾的接口。在 .cpp 文件中查找 stubbed-outHelloHTML
方法,并添加代码以显示消息框,例如:::MessageBox(NULL, _T("Here's your message"), _T("HelloHTML"), MB_OK);
将第三种方法
GoToURL
添加到不以“UI”结尾的接口。通过调用 IWebBrowser2::Navigate 来实现此方法,如下所示:m_spBrowser->Navigate(CComBSTR(L"www.microsoft.com"), NULL, NULL, NULL, NULL);
可以使用方法
IWebBrowser2
,因为 ATL 提供指向 .h 文件中该接口的指针。
接下来,修改 HTML 资源以调用所创建的方法。 将添加三个按钮来调用这些方法。
修改 HTML 资源
在解决方案资源管理器中,双击 .htm 文件以显示 HTML 资源。
检查 HTML,尤其是对外部 Windows 调度方法的调用。 HTML 调用项目的
OnClick
方法,参数指示控件 (theBody
) 的正文以及要分配 ("red
") 的颜色。 方法调用后面的文本是按钮上显示的标签。添加另一种
OnClick
方法,仅更改颜色。 例如:<br> <br> <BUTTON onclick='window.external.OnClick(theBody, "white");'>Refresh</BUTTON>
此方法将创建一个标记为“刷新”的按钮,用户可以单击该按钮将控件返回到原始白色背景。
添加对所创建
HelloHTML
方法的调用。 例如:<br> <br> <BUTTON onclick='window.external.HelloHTML();'>HelloHTML</BUTTON>
此方法将创建一个标记为 HelloHTML 的按钮,用户可以单击该按钮以显示
HelloHTML
消息框。
现在可以生成和测试修改后的 DHTML 控件。