Insertion d'un contrôle sur une page Web (Didacticiel ATL, Partie 7)
Votre contrôle est maintenant terminé. Pour voir votre travail de contrôle dans une situation réelle, placez-le sur une page Web. Un fichier HTML qui contient le contrôle a été créé lorsque vous avez défini votre contrôle. Ouvrez le fichier PolyCtl.htm à partir de Explorateur de solutions, et vous pouvez voir votre contrôle sur une page Web.
Dans cette étape, vous ajoutez des fonctionnalités au contrôle et scriptez la page Web pour répondre aux événements. Vous allez également modifier le contrôle pour indiquer à Internet Explorer que le contrôle est sécurisé pour l’écriture de scripts.
Ajout de nouvelles fonctionnalités
Pour ajouter des fonctionnalités de contrôle
Ouvrez PolyCtl.cpp et remplacez le code suivant :
if (PtInRegion(hRgn, xPos, yPos))
Fire_ClickIn(xPos, yPos);
else
Fire_ClickOut(xPos, yPos);
par
short temp = m_nSides;
if (PtInRegion(hRgn, xPos, yPos))
{
Fire_ClickIn(xPos, yPos);
put_Sides(++temp);
}
else
{
Fire_ClickOut(xPos, yPos);
put_Sides(--temp);
}
La forme ajoute ou supprime désormais des côtés en fonction de l’endroit où vous cliquez.
Script de la page web
Le contrôle ne fait rien pour le moment. Modifiez donc la page Web pour répondre aux événements que vous envoyez.
Pour créer un script sur la page Web
Ouvrez PolyCtl.htm et sélectionnez l’affichage HTML. Ajoutez les lignes suivantes au code HTML. Ils doivent être ajoutés après
</OBJECT>
mais avant</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>
Enregistrez le fichier HTM.
Vous avez ajouté du code VBScript qui obtient la propriété Sides du contrôle. Il augmente le nombre de côtés par un 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 par un.
Indiquant que le contrôle est Coffre pour l’écriture de scripts
Vous pouvez afficher la page Web avec le contrôle dans Internet Explorer uniquement. D’autres navigateurs ne prennent plus en charge les contrôles ActiveX en raison de faiblesses de sécurité.
Remarque
Si le contrôle n’est pas visible, sachez que certains navigateurs nécessitent des ajustements de paramètres pour exécuter des contrôles ActiveX. Reportez-vous à la documentation du navigateur sur l’activation des contrôles ActiveX.
En fonction de vos paramètres de sécurité Internet Explorer actuels, vous pouvez recevoir une boîte de dialogue Alerte de sécurité. Il indique que le contrôle peut ne pas être sûr de générer des scripts et pourrait causer des dommages. Par exemple, si vous aviez un contrôle qui affichait un fichier, mais qu’il avait également une Delete
méthode qui a supprimé un fichier, il serait sûr si vous venez de l’afficher sur une page. Toutefois, il n’est pas sûr de scripter, car quelqu’un pourrait appeler la Delete
méthode.
Important
Pour ce tutoriel, vous pouvez modifier vos paramètres de sécurité dans Internet Explorer pour exécuter des contrôles ActiveX qui ne sont pas marqués comme sécurisés. Dans Panneau de configuration, cliquez sur Propriétés Internet, puis sur Sécurité pour modifier les paramètres appropriés. Une fois le didacticiel terminé, remplacez vos paramètres de sécurité par leur état d’origine.
Vous pouvez alerter Par programmation Internet Explorer qu’il n’a pas besoin d’afficher la boîte de dialogue Alerte de sécurité pour ce contrôle particulier. Vous pouvez le faire à l’aide de l’interface IObjectSafety
. ATL fournit une implémentation de cette interface dans la classe IObject Coffre tyImpl. Pour ajouter l’interface à votre contrôle, ajoutez IObjectSafetyImpl
à votre liste de classes héritées et ajoutez une entrée pour celle-ci dans votre mappage COM.
Pour ajouter IObject Coffre tyImpl au contrôle
Ajoutez la ligne suivante à la fin de la liste des classes héritées dans PolyCtl.h et ajoutez une virgule à la ligne précédente :
public IObjectSafetyImpl<CPolyCtl, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
Ajoutez la ligne suivante à la carte COM dans PolyCtl.h :
COM_INTERFACE_ENTRY(IObjectSafety)
Création et test du contrôle
Générez le contrôle. Une fois la build terminée, ouvrez à nouveau PolyCtl.htm en mode navigateur. Cette fois, la page Web doit s’afficher directement sans la boîte de dialogue alerte Coffre ty. Si vous cliquez à l’intérieur du polygone, le nombre de côtés augmente d’un. Cliquez en dehors du polygone pour réduire le nombre de côtés.
Étapes suivantes
Cette étape conclut le didacticiel ATL. Pour plus d’informations sur ATL, consultez la page de démarrage ATL.