Шаг 222.
Среда программирования Visual C++.
Доступ к объектной модели DHTML

    На этом шаге мы рассмотрим пример программы, иллюстрирующей доступ к объектной модели DHTML.

    Как Вы помните, доступ к DHTML-объектам, таким, как window или document, очень прост, если сценарий размещен непосредственно в HTML-документе. Ссылаться на эти объекты разрешается просто по имени, как показано в следующем коде на JavaScript:

  document.bgColoг = "hotpink";

    Такая возможность обусловлена тем, что интерпретатор сценариев Internet Explorer анализирует строки Вашего сценария и преобразует их в вызовы интерфейсов Internet Explorer Automation. В C++ к объектной модели DHTML обращаются напрямую, вызывая соответствующие интерфейсы Automation.

    Объектная модель DHTML доступна через набор СОМ-интерфейсов, имена которых начинаются с префикса IHTML (IHTMLDocument, IHTMLWindow, IHTMLElement и т. п.). Класс CHtmlView предоставляет функцию GetHtmlDocument(), возвращающую указатель IDispatch на текущий HTML-документ. Зная его, Вы можете вызвать QueryInterface() и получить указатели на IHTML-интерфейсы. А это в свою очередь позволит Вам управлять документом, работая со свойствами и методами этих интерфейсов.

    Ниже мы посмотрим, как обращаться к элементам HTML-страницы, отображенной в приложении MyHtmlApp. Мы напишем код, создающий в отдельном диалоговом окне список всех анкеров (ссылок) текущей страницы со значениями их HREF-атрибутов (URL или пути к файлу). Пользователь сможет открыть любую из этих ссылок в браузере.


    Примечания.
  1. Вы обнаружите, что пробелы в URL-адресах (таких как C:\Chapter 1\MyPage.htm) в окне View Links заменяются Esc-последовательностями. Причина в том, что Internet Explorer применяет функцию API InternetCanonicalizeUrl() и преобразует URL в формат, гарантирующий корректное разрешение ссылки. Чтобы отобразить адреса в более привычном виде, Вы можете использовать эту же функцию.
  2. Перед компиляцией проекта нужно в установках проекта (пункт меню Project | Settings...) на вкладке C/C++ в категории C++ Language установить флажок Enable Run-Time Type Information (RTTI)


    Рис.7. Установка флажка Enable Run-Time Type Information (RTTI)

  3. Приложение будет правильно работать только тогда, когда тэги <A> будут иметь параметр NAME или ID. Ознакомьтесь с содержанием файла MyPage.htm, который находится в архиве приложения.

    Созданное приложение можно взять здесь (45,3 Кб).

    На следующем шаге мы рассмотрим ресурсы HTML.




Предыдущий шаг Содержание Следующий шаг