Seu controle agora está concluído. Para ver seu Controlarar em uma situação real de trabalho, colocá-lo em uma página da Web. Quando o Assistente de objeto ATL cria o controle inicial, ele também cria um arquivo HTML que contém o Controlarar. Você pode abrir o arquivo PolyCtl. htm no Internet Explorer e você ver seu Controlarar em uma página da Web.
O Controlarar não fazer nada ainda, então, mudar a página da Web para responder a eventos que você envia. Abrir PolyCtl. htm no Visual C++ (se o arquivo não aparece na FileView, selecione Abrir no menu arquivo para abrir o arquivo) e adicione as linhas em negrito.
LT;HTML > <HEAD> página de teste <TITLE> ATL 3.0 para object PolyCtl </TITLE> </HEAD> <BODY> < OBJECT ID = "PolyCtl" < CLASSID = "CLSID:4CBBC676-507F-11 D 0-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 & gt
Você adicionou um código de VBScript que obtém a propriedade de lados do Controlarar e aumenta o número de lados em um se você clique dentro do controle. Se você clique fora do controle é reduzir o número de lados por um.
Inicie o Internet Explorer e verifique se que as definições de segurança estão definidas como média:
Agora abra PolyCtl. htm no Internet Explorer. Após você clicar no controle, uma caixa de diálogo Alerta de segurança informa que o Internet Explorer não sabe se o Controlarar é seguro para script.
O que isso significa? Imagine se você tivesse um controle que, por exemplo, exibido um arquivo, mas também tinha um Delete
método que excluiu um arquivo. O controle seria seguro se você apenas visto em uma página, mas não seria seguro para script desde que alguém poderia chamar o Delete
Método. Esta mensagem é maneira do Internet Explorer de dizer que não sabe se alguém poderia fazer danos com esse controle, então ele está solicitando que o usuário.
Você sabe o controle é seguro, portanto, clique em Sim. Agora clique dentro do polígono; o número de lados aumenta em um. Clique fora do polígono para reduzir o número de lados. Se você tentar reduzir o número de lados abaixo três, você verá a mensagem de erro que você definir.
A figura a seguir mostra o controle executado no Internet Explorer após você ter clicado duas vezes dentro do polígono.
Pois você sabe que seu controle seja sempre seguro para script, seria bom que a Internet Explorer saiba, para que ele não precisa de mostrar a caixa de diálogo Alerta de segurança . Você pode fazer isso através da interface IObjectSafety . ATL fornece uma implementação desta interface na classe IObjectSafetyImpl.
Para adicionar a interface a seu Controlarar, adicionar IObjectSafetyImpl à sua lista de classes herdadas e adicione uma entrada para ele no seu mapa de COM.
Adicione a seguinte linha ao final da lista de classes herdadas em PolyCtl. H, lembrando-se de adicionar uma vírgula para a linha anterior:
iObjectSafetyImpllt pública;CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER & gt
Em seguida, adicione a seguinte linha para o mapa de COM em PolyCtl. H:
COM_INTERFACE_ENTRY(IObjectSafety)
Agora crie o controle. Quando termina a compilação, abra PolyCtl. htm no Internet Explorer novamente. Desta vez a página da Web deve ser exibida diretamente sem caixa de diálogo Violação de segurança . Clique dentro e fora do polígono para confirmar que o script está funcionando.