Размещение элемента управления на веб-странице (учебник ATL, часть 7)

Теперь элемент управления завершен. Чтобы увидеть работу элемента управления в реальной ситуации, поместите ее на веб-страницу. HTML-файл, содержащий элемент управления, был создан при определении элемента управления. Откройте файл PolyCtl.htm из Обозреватель решений, и вы увидите элемент управления на веб-странице.

На этом шаге вы добавите функциональные возможности в элемент управления и скрипт веб-страницы для реагирования на события. Вы также измените элемент управления, чтобы сообщить Интернету Обозреватель знать, что элемент управления является безопасным для сценариев.

Добавление новых функций

Добавление функций управления

Откройте PolyCtl.cpp и замените следующий код:

if (PtInRegion(hRgn, xPos, yPos))
  Fire_ClickIn(xPos, yPos);
else
  Fire_ClickOut(xPos, yPos);

на

short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
  Fire_ClickIn(xPos, yPos);
  put_Sides(++temp);
}
else
{
  Fire_ClickOut(xPos, yPos);
  put_Sides(--temp);
}

Теперь фигура будет добавлять или удалять стороны в зависимости от того, где вы щелкаете.

Скриптирование веб-страницы

Элемент управления еще ничего не делает, поэтому измените веб-страницу на ответ на события, которые вы отправляете.

Скрипт веб-страницы

  1. Откройте PolyCtl.htm и выберите представление HTML. Добавьте следующие строки в HTML-код. Их следует добавить после </OBJECT> , но раньше </BODY>.

    <SCRIPT LANGUAGE="VBScript">
    <!--
        Sub PolyCtl_ClickIn(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - adding side")
        End Sub
        Sub PolyCtl_ClickOut(x, y)
            MsgBox("Clicked (" & x & ", " & y & ") - removing side")
        End Sub
    -->
    </SCRIPT>
    
  2. Сохраните HTM-файл.

Вы добавили некоторый код VBScript, который получает свойство Side из элемента управления. Это увеличивает количество сторон на одну, если щелкнуть внутри элемента управления. Если щелкнуть за пределами элемента управления, вы уменьшите количество сторон на одну.

Указание того, что элемент управления Сейф для скриптов

Вы можете просматривать веб-страницу только с элементом управления в Интернете Обозреватель. Другие браузеры больше не поддерживают элементы ActiveX из-за слабых мест безопасности.

Примечание.

Если элемент управления не отображается, знают, что некоторые браузеры требуют корректировки параметров для запуска элементов ActiveX. Сведения о включении элементов ActiveX см. в документации браузера.

В зависимости от текущих параметров безопасности Обозреватель Интернета вы можете получить диалоговое окно "Оповещение системы безопасности". Он утверждает, что элемент управления может быть небезопасн для скрипта и может потенциально причинить ущерб. Например, если у вас есть элемент управления, отображающий файл, но и Delete метод, удаляющий файл, он будет безопасным, если вы только что просматривали его на странице. Однако сценарий не будет безопасным, так как кто-то может вызвать Delete метод.

Важно!

В этом руководстве можно изменить параметры безопасности в Интернете Обозреватель для запуска элементов ActiveX, которые не помечены как безопасные. В панель управления щелкните "Свойства Интернета" и щелкните "Безопасность", чтобы изменить соответствующие параметры. После завершения работы с руководством измените параметры безопасности обратно в исходное состояние.

Вы можете программно оповещать Интернет Обозреватель, что для этого конкретного элемента управления не требуется отображать диалоговое окно "Оповещение системы безопасности". Это можно сделать с помощью IObjectSafety интерфейса. ATL предоставляет реализацию этого интерфейса в классе IObject Сейф tyImpl. Чтобы добавить интерфейс в элемент управления, добавьте IObjectSafetyImpl в список унаследованных классов и добавьте запись для него на карте COM.

Добавление IObject Сейф tyImpl в элемент управления

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

    public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
    
  2. Добавьте следующую строку в com-карту в PolyCtl.h:

    COM_INTERFACE_ENTRY(IObjectSafety)
    

Сборка и тестирование элемента управления

Создайте элемент управления. После завершения сборки снова откройте PolyCtl.htm в представлении браузера. На этот раз веб-страница должна отображаться непосредственно без диалогового окна Сейф генерации оповещений. Если щелкнуть внутри многоугольника, число сторон увеличивается на один. Щелкните за пределами многоугольника, чтобы уменьшить количество сторон.

Назад к шагу 6

Дальнейшие действия

На этом шаге завершается учебник ATL. Ссылки на дополнительные сведения об ATL см. на начальной странице ATL.

См. также

Руководство