Поделиться через


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

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

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

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

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

Откройте 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 из элемента управления. Это увеличивает количество сторон на одну, если щелкнуть внутри элемента управления. Если щелкнуть за пределами элемента управления, вы уменьшите количество сторон на одну.

Указывает, что элемент управления является безопасным для скриптов

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

Примечание.

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

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

Внимание

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

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

Добавление IObjectSafetyImpl в элемент управления

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

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

    COM_INTERFACE_ENTRY(IObjectSafety)
    

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

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

Назад к шагу 6

Next Steps

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

См. также

Руководство