Partilhar via


Colocando o controle em uma página da Web (ATL Tutorial, Parte 7)

O seu controlo está agora concluído. Para ver seu controle funcionar em uma situação do mundo real, coloque-o em uma página da Web. Um arquivo HTML que contém o controle foi criado quando você definiu seu controle. Abra o arquivo de PolyCtl.htm no Gerenciador de Soluções e você pode ver seu controle em uma página da Web.

Nesta etapa, você adiciona funcionalidade ao controle e script da página da Web para responder a eventos. Você também modificará o controle para informar ao Internet Explorer que o controle é seguro para scripts.

Adicionando novas funcionalidades

Para adicionar recursos de controle

Abra PolyCtl.cpp e substitua o seguinte código:

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

com o

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

A forma agora terá mais lados ou menos, dependendo de onde clicar.

Criando scripts para a página da Web

O controle ainda não faz nada, portanto, altere a página da Web para responder aos eventos enviados.

Para criar scripts para a página da Web

  1. Abra PolyCtl.htm e selecione a visualização HTML. Adicione as seguintes linhas ao código HTML. Eles devem ser adicionados depois de </OBJECT>, mas antes de </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. Salve o arquivo HTM.

Você adicionou algum código VBScript que obtém a propriedade Sides do controle. Ele aumenta o número de lados em um se você clicar dentro do controle. Se clicar fora do controlo, reduz o número de lados em um.

Indicando que o controle é seguro para scripts

Você pode exibir a página da Web com o controle somente no Internet Explorer. Outros browsers já não suportam controlos ActiveX devido a falhas de segurança.

Observação

Se o controle não estiver visível, saiba que alguns navegadores exigem ajustes de configurações para executar controles ActiveX. Consulte a documentação do navegador sobre como habilitar controles ActiveX.

Com base nas suas definições de segurança atuais do Internet Explorer, poderá receber uma caixa de diálogo Alerta de Segurança. Afirma que o componente poderá não ser seguro para usar em scripts e poderá causar danos. Por exemplo, se você tivesse um controle que exibisse um arquivo, mas também tivesse um Delete método que excluísse um arquivo, seria seguro se você apenas o visualizasse em uma página. Não seria seguro escrever scripts, no entanto, porque alguém poderia chamar o método Delete.

Importante

Para este tutorial, você pode alterar suas configurações de segurança no Internet Explorer para executar controles ActiveX que não estão marcados como seguros. No Painel de Controle, clique em Propriedades da Internet e clique em Segurança para alterar as configurações apropriadas. Quando tiver concluído o tutorial, altere as configurações de segurança de volta ao estado original.

Você pode alertar programaticamente o Internet Explorer que ele não precisa exibir a caixa de diálogo Alerta de Segurança para esse controle específico. Você pode fazê-lo usando a IObjectSafety interface. ATL fornece uma implementação desta interface na classe IObjectSafetyImpl. Para adicionar a interface ao seu controle, adicione IObjectSafetyImpl à sua lista de classes herdadas e adicione uma entrada para ela no seu mapa COM.

Para adicionar IObjectSafetyImpl ao controle

  1. Adicione a seguinte linha ao final da lista de classes herdadas em PolyCtl.h e adicione uma vírgula à linha anterior:

    public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
    
  2. Adicione a seguinte linha ao mapa COM em PolyCtl.h:

    COM_INTERFACE_ENTRY(IObjectSafety)
    

Construindo e testando o controle

Crie o controle. Quando a compilação tiver terminado, abra PolyCtl.htm novamente na visualização do navegador. Desta vez, a página Web deve ser apresentada diretamente sem a caixa de diálogo Alerta de Segurança . Se você clicar dentro do polígono, o número de lados aumenta em um. Clique fora do polígono para reduzir o número de lados.

Voltar ao Passo 6

Próximas Etapas

Esta etapa conclui o tutorial do ATL. Para obter links para obter mais informações sobre ATL, consulte a página inicial do ATL.

Ver também

Tutoriais