WebBrowser宿主应用程序可以扩展Dynamic HTML Object Model,从而使脚本可以调用宿主实现的方法。脚本通过window.external对象来引用宿主提供的IDispath接口。而宿主要提供一个IDispath接口的实现(必须实现IDispatch::GetIDsOfNames and IDispatch::Invoke)来处理脚本对其进行的调用。WebBrowser Control or MSHTML 通过调用宿主的 IDocHostUIHandler::GetExternal 方法来获取宿主提供的IDispath接口实现。
CDHtmlDlg 派生自 CCmdTarget 类,并且作为 IWebBrowser2 实现和 IHTMLDocument2 实现的宿主,因此它可以使用 Dispatch maps 机制来实现一个 IDispath 接口,并且 WebBrowser 控件中的脚本可以调用其 IDispath 接口的实现。