Шаг 120 - Помещение элемента управления на Web страницу

Мы закончили с элементентом управления. Чтобы увидеть работу элемента управления в реальной жизни, поместите его на Web страницу. Когда ATL Object Wizard создает элемент управления он также создает HTML файл, который содержит ссылку на элемент управления. Вы можете загрузить этот файл PolyCtl.htm в Internet Explorer и увидите элемент управления на Web странице.

Элемент управления ничего не делает, поэтому нам нужно изменить Web страницу. Откройте PolyCtl.htm в Visual C++ (если файл не появляется в FileView выберите Open из меню File, чтобы открыть файл) и добавьте строки выделенные жирным.

<HTML>
<HEAD>
<TITLE>ATL 3.0 test page for object PolyCtl</TITLE>
</HEAD>
<BODY>
<OBJECT ID="PolyCtl" <
 CLASSID="CLSID:4CBBC676-507F-11D0-B98B-000000000000">
>
</OBJECT>

<SCRIPT LANGUAGE="VBScript">
<!--
Sub PolyCtl_ClickIn(x, y)
	PolyCtl.Sides = PolyCtl.Sides + 1
End Sub

Sub PolyCtl_ClickOut(x, y)
	PolyCtl.Sides = PolyCtl.Sides - 1
End Sub
-->

</SCRIPT>
</BODY>
</HTML>

Мы добавили код используя VBScript, который получает свойство сторон из элемента управления. Увеличивает число сторон при нажатии мышки внутри элемента управления и уменьшает при нажатии мышкой снаружи элемента управления.

Запустите Internet Explorer и удостоверьтесь, что установки Security установлены в Medium. Теперь откройте PolyCtl.htm. После того как мы нажимаем на элементе управления появляется диалоговое окно Security Alert и сообщает, что Internet Explorer не знает безопасен ли элемент управления или нет.

Что это означает? Представьте, что у Вас есть элемент управления, который может удалять файлы. Элемент управления был бы безопасным, если смотреть только страницу свойств, но он не будет безопасным, если сможет вызвать метод Delete. Это сообщение – механизм используемый в IE для предупреждения о том, что он не знает о возможности нанесения вреда элементом управления и спрашивает об этом у пользователя.

Вы знаете, что ваш элемент управления безопасен, значит Вы можете нажать Yes. Теперь нажмите внутри многоугольника, число сторон увеличивается на одну. Нажмите снаружи многоугольника, чтобы уменьшить число сторон. Если Вы пробуете сделать число сторон меньше трех, то увидите сообщение об ошибке, которое мы устанавливали. Следующий рисунок показывает элемент управления в Internet Explorer после того, как внутри многоугольника я нажал мышку дважды.

120_1.gif (7752 b)

Так как мы знаем, что наш элемент управления всегда безопасен было бы хорошо объяснить для Internet Explorer, что элемент безопасен и не требуется показывать диалоговое окно Security Alert. Можно сделать это через интерфейс IObjectSafety. ATL обеспечивает реализацию этого интерфейса в классе IObjectSafetyImpl. Добавляется интерфейс к элементу управления путем добавления IObjectSafetyImpl к списку унаследованных классов и добавлением входа для него в карте COM.

Добавьте следующую строку к концу списка унаследованных классов в PolyCtl.h, не забыв добавить запятую к предыдущей строке:

public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>

Затем добавьте следующую строку к карте COM в PolyCtl.h:

COM_INTERFACE_ENTRY(IObjectSafety)

Теперь соберите элемент управления. Как только формирование закончится, откройте PolyCtl.htm в IEснова. На сей раз страница должна отобразиться без диалогового окна Safety Violation. Нажмите внутри и снаружи многоугольника, чтобы убедиться, что созданный сценарий работает.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 16.09.2002