Partager via


StockTicker, exemple : affiche des informations Web dans un contrôle ATL

Mise à jour : novembre 2007

L'exemple StockTicker télécharge des informations boursières sur le Web et les affiche dans un contrôle ATL qui fait défiler les données de droite à gauche. Le contrôle met à jour les données à des intervalles définis par l'utilisateur.

StockTicker se compose de quatre éléments :

  • composant ATL partagé (stockquotes) ;

  • contrôle ATL (stocktickeratl) ;

  • DLL d'extension ISAPI (stocksourcemfc) ;

  • application conteneur MFC (containermfc). Vous pouvez renommer ce fichier .exe.

Note de sécurité :

Cet exemple de code est fourni pour illustrer un concept et ne doit pas être utilisé dans des applications ou des sites Web, car il peut ne pas illustrer les pratiques de programmation les plus sûres. Microsoft n'assume aucune responsabilité pour tout dommage indirect ou consécutif en cas d'utilisation de l'exemple de code à des fins autres que celles prévues.

Pour obtenir des exemples et des instructions d'installation :

  • Dans le menu ? (Aide) de Visual Studio, cliquez sur Exemples.

    Pour plus d'informations, consultez Recherche des fichiers d'exemple.

  • La liste la plus récente et la plus complète d'exemples est disponible en ligne à partir de la page Visual Studio 2008 Samples.

  • Des exemples sont également disponibles sur le disque dur de votre ordinateur. Des exemples et un fichier Readme sont copiés par défaut dans un dossier sous \Program Files\Visual Studio 9.0\Samples\. Pour les éditions Express de Visual Studio, tous les exemples sont accessibles en ligne.

Génération et exécution de l'exemple

Pour générer et exécuter l'exemple StockTicker

  1. Ouvrez la solution StockTicker.sln.

  2. Dans le menu Générer, cliquez sur Générer.

  3. Utilisez regsvr32 pour inscrire deux DLL : stockquotes.dll et stocktickeratl.dll. Vous serez peut-être obligé d'inscrire également ATL.dll.

    La DLL d'extension ISAPI reproduit une source de données de cotation boursière. Elle doit être installée sur un ordinateur exécutant déjà un logiciel de serveur Web (par exemple IIS). Vous devez indiquer à StockTicker l'emplacement de cette DLL. Pour obtenir des instructions sur l'utilisation de la DLL d'extension ISAPI, consultez ce qui suit.

  4. Exécutez containermfc.exe. Cliquez avec le bouton droit dans la zone cliente de l'application pour afficher un menu contextuel. Utilisez ce menu pour modifier le comportement et les propriétés de StockTicker, comme décrit dans la rubrique suivante.

Ajout de sites Web en tant que sources d'informations boursières

Suivez les étapes ci-dessous pour ajouter votre propre site Web en tant que source d'informations boursières.

  1. Éditez stockquotes\stockquotes_.h. Examinez la classe CSQSISAPIDll. Elle peut vous servir d'exemple pour créer de nouvelles classes de cotation boursière.

  2. Créez une classe dérivée de CStockQuoteSource.

  3. Dans le nouveau constructeur de classe, affectez à m_strURL l'URL complète du site Web d'où les données seront récupérées. Veillez à inclure la commande permettant de récupérer les données de cotations boursières.

  4. Le format des données HTML retournées par le site Web peut vous obliger à substituer SetStockInfo et/ou ParseStockInfo.

  5. Régénérez le composant, puis inscrivez-le.

Si le site sélectionné retourne des données ressemblant à ceci : CONAME: <NA> (où CONAME représente le symbole de cotation), le site n'est peut-être pas accessible ou la classe source créée n'a pas pu trouver d'informations boursières parmi les données HTML.

Remarque :

Le format, décimal ou fractionnaire, des données de cotations boursières peut différer selon les actions à surveiller. StockTicker n'essaie pas de modifier les données pour les rendre cohérentes.

Comportement et propriétés de StockTicker

  • Stocks
    Affiche une boîte de dialogue dans laquelle vous pouvez ajouter ou supprimer les symboles des cotations surveillées. Cette boîte de dialogue s'initialise en même temps que la liste en cours des symboles de cotations.

  • Update Now
    Met à jour les informations boursières à partir du Web.

  • Propriétés
    La boîte de dialogue Propriétés comporte trois pages de propriétés : couleur, police et personnalisée. Si les pages de propriétés relatives à la couleur et à la police des cotations ne s'affichent pas dans la boîte de dialogue Propriétés, vérifiez que vous avez inscrit msstkprp.dll.

    Vous pouvez modifier les propriétés suivantes :

    • Ticker Speed   Déplacez le curseur pour augmenter ou réduire la vitesse de défilement des informations boursières de droite à gauche.

    • Update Interval   Délai en minutes entre les mises à jour.

    • ISAPI Extension DLL URL   Entrez l'URL complète de la DLL d'extension ISAPI. Ajoutez le texte suivant à la fin de l'URL : ?QueryForStock?Symbol=.

      Lorsque vous spécifiez l'URL de la DLL d'extension ISAPI, vous devez inclure le composant chargé de retourner les données HTML contenant les informations boursières.

  • About Stock Ticker
    Ouvre la boîte de dialogue About.

  • Stay On Top
    StockTicker reste affiché au-dessus de toutes les autres applications ; dans le cas contraire, il peut être masqué par celles-ci.

Fonctionnalités utilisées par StockTicker

  • Objet COM ATL

  • Objet Dialog ATL

  • Contrôle ATL

  • Classes Internet (WinInet) MFC

  • DLL d'extension ISAPI MFC

  • Points de connexion

  • Persistance

  • Énumérateurs personnalisés

  • Bibliothèque C++ standard

Composants StockTicker

Cette section contient des détails supplémentaires sur les composants StockTicker.

  • Composant Stock Quotes
    Le composant partagé, l'objet ATL, est créé à l'aide de l'Assistant Projet ATL. Celui-ci utilise la prise en charge WinInet MFC et d'autres classes d'utilitaires. Stock Quotes effectue le suivi des cotations spécifiées et met à jour les informations boursières en provenance du Web. Une application peut utiliser ce composant pour des mises à jour synchrones ou asynchrones. Si la méthode StartUpdating est appelée, un thread enfant est créé et la fonction est retournée immédiatement. Le thread enfant crée une minuterie et attend que l'intervalle de mise à jour se soit écoulé. Il demande ensuite une mise à jour au composant Stock Quotes. Les appels ultérieurs à Update publient un message de thread vers le thread enfant pour indiquer qu'une mise à jour doit s'effectuer, puis Update est retournée immédiatement. En mode synchrone, Update se bloque jusqu'à la fin du téléchargement.

    Le composant Stock Quotes effectue le suivi des objets source de données de cotations boursières, qui représentent les sites Web où sont téléchargées les informations boursières. Lorsque StockTicker met à jour les informations boursières, le composant Stock Quotes parcourt la liste des sources de données de cotations boursières et essaie de télécharger les informations. En cas d'échec, le composant essaie de télécharger les données de cotations boursières de la source suivante. Si tous les téléchargements d'informations sur les sources de données de cotations boursières échouent, <NA> s'affiche dans la fenêtre du bandeau de défilement des cotations, en regard du symbole de cotation.

    Les données de cotations boursières proviennent du site Web au format HTML. Elles doivent être analysées pour trouver le cours actuel et ses variations depuis la dernière mise à jour. Le composant Stock Quotes gère cette analyse en recherchant 2 mots clés : par exemple, Current: ou Change:. Il lit les données placées à la suite des mots clés, qu'elles se présentent sous forme de fractions ou de nombres décimaux (données fractionnaires ou décimales).

    Les sites Web de cotations boursières proposent parfois leurs informations selon des méthodes différentes, par conséquent, vous pouvez être amené à modifier l'algorithme utilisé par Stock Quotes pour obtenir les informations boursières.

    Consultez les instructions ci-dessous pour ajouter vos propres sources de données de cotations boursières.

  • une DLL d'extension ISAPI ;
    La source de données de cotations boursières par défaut est représentée par la DLL d'extension ISAPI locale. La DLL d'extension ISAPI ne retourne pas de données de cotations boursières réelles. En fait, lorsque vous demandez les données d'une cotation, la DLL vérifie si le symbole de cotation fait partie de sa liste des cotations connues. Si le symbole de cotation fait effectivement partie de la liste, la DLL récupère les données correspondantes et ajuste de manière aléatoire le cours actuel de l'action vers le haut ou vers le bas. Si le symbole de cotation est nouveau, il est ajouté à la liste et un cours initial est défini pour l'action.

  • Contrôle Stock Ticker
    Ce contrôle est créé à l'aide de l'Assistant Objet ATL. Il utilise MFC pour faciliter certaines opérations.

    Il peut être utilisé en dehors de StockTicker.

    Le contrôle Stock Ticker utilise le composant Stock Quotes pour gérer les informations et les mises à jour relatives aux cotations. Lors de l'enregistrement dans un flux, le contrôle demande également au composant Stock Quotes de s'enregistrer.

    Au démarrage, le contrôle Stock Ticker crée le composant Stock Quotes et lui demande de commencer la mise à jour des informations boursières. Ensuite, le contrôle démarre une minuterie qu'il utilise pour la boucle draw/render. Lorsque les données de cotations boursières sont mises à jour, le composant Stock Quotes le notifie au contrôle (via un point de connexion). Le contrôle obtient alors toutes les informations boursières nécessaires de la part du composant Stock Quotes, puis il les utilise pour créer une chaîne. Cette chaîne est affichée dans le contrôle et défile de droite à gauche.

  • Conteneur Stock Ticker
    Le conteneur Stock Ticker est un conteneur de contrôle MFC Active Control, créé à l'aide de l'Assistant Application MFC. Il enregistre sa taille et sa position au moment de quitter ; cela lui permet de restaurer son état antérieur lorsqu'il redémarre.

    Le conteneur gère également les menus de StockTicker.

Mots clés

Cet exemple illustre l'utilisation des mots clés suivants :

IEnumXXX, CWinThread, std::vector, IConnectionPointContainer, CInternetSession, CInternetException, AfxParseURL, CHttpConnection, CHttpFile, COleClientItem, COleDocument, COleDispatchDriver, CreateILockBytesOnHGlobal, StgCreateDocfileOnILockBytes, OleSave, StgIsStorageILockBytes, GetHGlobalFromILockBytes, COleFont, std::basic_istream, std::basic_ostream, CHttpServer, CComPtr, CDialogImpl, std::list, IPersistStreamInit, IFontDisp, IViewObjectEx, CComControl, IOleControl, IPropertyPageImpl, CBitmap, CDC, IPersistStreamInit_Load, IPersistStreamInit_Save, IConnectionPointImpl

Remarque :

Certains exemples, tels que celui-ci, n'ont pas été modifiés pour refléter les changements apportés aux Assistants, aux bibliothèques et au compilateur Visual C++, mais ils illustrent bien l'exécution de la tâche souhaitée.

Voir aussi

Autres ressources

Exemples MFC