Comment : héberger un contrôle ActiveX dans une ressource de boîte de dialogue
Mise à jour : novembre 2007
Lorsque vous utilisez Visual Studio pour concevoir des contrôles ActiveX pour les appareils, vous devez ajouter des étapes supplémentaires. L'Éditeur de ressources s'appuie sur le contrôle enregistré sur l'ordinateur de bureau pour le manipuler au moment du design. De plus, vous ne pouvez pas enregistrer les contrôles d'un appareil sur l'ordinateur de bureau. Les étapes suivantes fournissent une autre possibilité au moment du design. Les procédures suivantes supposent que vous disposez déjà du projet de contrôle ActiveX et du projet hôte, et que vous hébergez le contrôle ActiveX dans une boîte de dialogue.
Remarque : |
---|
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio. |
Pour ajouter des contrôles ActiveX à l'aide de l'Éditeur de boîtes de dialogue
Dans l'Éditeur de boîtes de dialogue, ouvrez la boîte de dialogue du projet hôte.
À partir de la Boîte à outils, faites glisser un contrôle personnalisé vers la boîte de dialogue.
Positionnez et dimensionnez le contrôle personnalisé dans la boîte de dialogue en fonction de l'apparence souhaitée pour votre contrôle ActiveX.
Cliquez avec le bouton droit sur le contrôle personnalisé, puis cliquez sur Propriétés.
Dans la propriété Class, collez le GUID du contrôle ActiveX. Veillez à inclure les accolades "{…}".
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le fichier Project Name.RC2, puis cliquez sur Afficher le code.
Dans la section Ajouter ici les ressources modifiées manuellement, ajoutez le code suivant. Le contrôle personnalisé requiert l'affichage correct de la section d'initialisation d'une boîte de dialogue. Le contenu de la section effective d'initialisation de la boîte de dialogue n'est pas utilisé. Veillez à remplacer <nom de projet> par le nom de votre projet.
IDD_<project name>_DIALOG DLGINIT BEGIN IDC_CUSTOM1, 0x376, 22, 0 0x0000, 0x0000, 0x0800, 0x0000, 0x094d, 0x0000, 0x043d, 0x0000, 0x0013, 0xcdcd, 0xcdcd, 0
Générez et exécutez votre projet hôte. Veillez à déployer et inscrire le contrôle ActiveX sur l'appareil cible.
Pour utiliser une autre méthode d'hébergement des contrôles ActiveX
Inscrivez la classe de fenêtre AtlAxWin80 en appelant AtlAxWinInit à un point donné dans l'application.
Les applications ATL effectuent cette tâche dans le code d'initialisation du module. Les applications Win32 doivent appeler cette fonction dans la fonction WinMain. Pour les applications MFC, procédez comme suit :
Cliquez avec le bouton droit sur le nœud de projet Explorateur de solutions, pointez sur Ajouter,puis cliquez sur Classe.
Cliquez sur Ajouter la prise en charge ATL aux MFC (sous le titre Smart Device).
Ajoutez l'appel AtlAxWinInit en haut de la méthode InitInstance de la classe de l'application hôte.
Dans une ressource de boîte de dialogue (par exemple une boîte de dialogue ATL, un contrôle composite ou une boîte de dialogue MFC) :
Faites glisser un contrôle personnalisé à partir de la Boîte à outils.
Affectez à la propriété de classe de la fenêtre la valeur AtlAxWin80.
Affectez à la légende la valeur du GUID entre accolades, ou du ProgId.
Pour MFC, ajoutez atl.lib comme entrée de lien supplémentaire.
Pour MFC, ajoutez ces lignes à l'option Déploiement | Fichiers supplémentaires. Bien que les lignes soient déjà présentes pour les bibliothèques de liens dynamiques (DLL), elles doivent être ajoutées pour les bibliothèques MFC liées de manière statique.
msvcr80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 atl80.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0 msvcr80d.dll|$(BINDIR)\$(INSTRUCTIONSET)\|%CSIDL_PROGRAM_FILES%\$(ProjectName)|0