Votre commande est maintenant terminée. Pour voir votre contrôle dans une situation réelle de travail, mettre sur une page Web. Lorsque l'Assistant objet ATL crée le contrôle initial, il crée également un fichier HTML qui contient le contrôle. Vous pouvez ouvrir le fichier PolyCtl.htm dans Internet Explorer et vous voyez votre contrôle sur une page Web.
Le contrôle n'est pas faire n'importe quoi encore, donc modifier la page Web pour répondre à des événements que vous envoyez. Ouvrez PolyCtl.htm dans Visual C++ (si le fichier n'apparaît pas dans FileView, sélectionnez Ouvrir dans le menu fichier pour ouvrir le fichier) et ajoutez les lignes en gras.
lt ;HTML > <HEAD> page de test <TITLE> ATL 3.0 pour objet PolyCtl </TITLE> </HEAD> <BODY> < objet 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
Vous avez ajouté un code VBScript qui obtient la propriété des parties du contrôle et augmente le nombre de côtés d'une unité, si vous cliquez à l'intérieur du contrôle. Si vous cliquez en dehors du contrôle vous réduisez le nombre de côtés d'un.
Démarrez Internet Explorer et assurez-vous que vos paramètres de sécurité sont définis à moyen:
Maintenant, ouvrez PolyCtl.htm dans Internet Explorer. Après que vous cliquez sur le contrôle, une boîte de dialogue Alerte de sécurité vous informe que Internet Explorer ne sait pas si le contrôle est sûr de script.
Ce que cela signifie ? Imaginez si vous aviez un contrôle qui, par exemple, affiche un fichier, mais avait aussi une Delete méthode qui a supprimé un fichier. Le contrôle seraient en sécurité si vous seulement il vu sur une page, mais ne serait pas sécuritaire de script puisque quelqu'un pourrait appeler la Delete méthode. Ce message est de Internet Explorer de dire qu'il ne connaît pas si quelqu'un pourrait le faire dommage avec ce contrôle, donc elle demande à l'utilisateur.
Vous savez que votre commande est sûre, alors cliquez sur Oui. Maintenant cliquez à l'intérieur du polygone ; le nombre de côtés augmente d'une unité. Cliquez en dehors du polygone afin de réduire le nombre de côtés. Si vous essayez de réduire le nombre de côtés au-dessous de trois, vous verrez le message d'erreur que vous avez définie.
La figure suivante montre le contrôle exécute dans Internet Explorer après que vous avez cliqué deux fois à l'intérieur du polygone.

Puisque vous connaissez que votre contrôle est toujours sûr de script, il serait bon de faire savoir, Internet Explorer afin qu'il n'a pas besoin afficher la boîte de dialogue Alerte de sécurité . Vous pouvez le faire via l'interface IObjectSafety . ATL fournit une implémentation de cette interface dans la classe IObjectSafetyImpl.
Pour ajouter l'interface à votre contrôle, juste ajouter IObjectSafetyImpl à votre liste de classes héritées et ajoutez une entrée pour elle dans votre plan de COM.
Ajoutez la ligne suivante à la fin de la liste des classes héritées dans PolyCtl.h, sans oublier d'ajouter une virgule à la ligne précédente:
iObjectSafetyImpllt public ;CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER & gt
Puis ajoutez la ligne suivante à la carte COM dans PolyCtl.h:
COM_INTERFACE_ENTRY(IObjectSafety)
Maintenant générer le contrôle. Une fois que la build est terminée, ouvrez PolyCtl.htm dans Internet Explorer une fois de plus. Cette fois, la page Web doit s'afficher directement sans la boîte de dialogue Violation de sécurité . Cliquez à l'intérieur et à l'extérieur du polygone afin de confirmer que le script fonctionne.
Retour à l'étape 6 |nbsp ; Aux références