Esempio StockTicker: visualizzazione di informazioni Web in un controllo ATL
Aggiornamento: novembre 2007
L'esempio StockTicker consente di eseguire il download di informazioni di Borsa dal Web e di visualizzarle in un controllo ATL in cui i dati scorrono da destra a sinistra. I dati vengono aggiornati dal controllo a intervalli definiti dall'utente.
StockTicker è costituito da quattro componenti:
Componente ATL condiviso (stockquotes)
Controllo ATL (stocktickeratl)
DLL di estensione ISAPI (stocksourcemfc).
Applicazione contenitore MFC (containermfc). Il nome di questo file eseguibile può essere modificato.
Nota sulla sicurezza: |
---|
Questo esempio di codice viene fornito solo a scopo dimostrativo e non deve essere utilizzato in applicazioni o siti Web, poiché potrebbe non implementare le tecniche migliori a livello di sicurezza. Microsoft esclude ogni responsabilità per danni diretti o indiretti derivanti dall'utilizzo dell'esempio di codice per scopi diversi da quelli previsti. |
Per ottenere gli esempi e le istruzioni per l'installazione:
In Visual Studio scegliere Esempi dal menu ?.
Per ulteriori informazioni, vedere Individuazione dei file di esempio.
La versione più recente e l'elenco completo degli esempi sono disponibili in linea alla pagina Visual Studio 2008 Samples.
È anche possibile trovare gli esempi sul disco rigido del computer. Per impostazione predefinita, gli esempi e il file Leggimi vengono copiati in una cartella nel percorso \Programmi\Visual Studio 9.0\Samples\. Per le versioni Express di Visual Studio, tutti gli esempi sono disponibili in linea.
Generazione ed esecuzione dell'esempio
Per generare ed eseguire l'esempio StockTicker
Aprire il file di soluzione StockTicker.sln.
Scegliere Genera dal menu Genera.
Utilizzare regsvr32 per registrare due DLL: stockquotes.dll e stocktickeratl.dll. È possibile che sia necessario registrare anche ATL.dll.
La DLL di estensione ISAPI, che riproduce un'origine dati di quotazioni di Borsa, deve essere installata su un computer sul quale è disponibile un software server Web, ad esempio Microsoft Internet Information Services (IIS). È necessario che nell'applicazione StockTicker vengano specificate le informazioni per individuare la DLL. Per ulteriori istruzioni su come utilizzare la DLL di estensione ISAPI, vedere di seguito.
Eseguire containermfc.exe. Fare clic con il pulsante destro del mouse nell'area client dell'applicazione per aprire un menu di scelta rapida. Le opzioni disponibili in questo menu consentono di modificare il funzionamento e le proprietà di StockTicker, come descritto in una sezione riportata di seguito.
Come aggiungere siti Web con dati di Borsa
Per aggiungere un sito Web di origine con dati di Borsa, completare le operazioni seguenti.
Modificare stockquotes\stockquotes_.h. Esaminare la classe CSQSISAPIDll, che può essere utilizzata come riferimento per creare nuove classi di quotazioni di Borsa.
Creare una nuova classe derivata da CStockQuoteSource.
Nel costruttore della nuova classe, impostare m_strURL sull'URL completo del sito Web dal quale devono essere recuperati i dati. Includere il comando per recuperare i dati di Borsa.
Il formato HTML dei dati restituiti dal sito Web può rendere necessario eseguire l'override di SetStockInfo e/o ParseStockInfo.
Rigenerare il componente e registrarlo.
Se il sito selezionato restituisce una stringa simile a CONAME: <NA>, dove CONAME è il simbolo del titolo azionario, è possibile che il sito non sia accessibile oppure che le informazioni non siano state trovate dalla classe di origine creata nella pagina HTML.
Nota: |
---|
Il formato dei dati di Borsa, decimale o frazionario, può variare a seconda delle azioni considerate. StockTicker non altera i dati per renderli coerenti tra loro. |
Funzionamento e proprietà di StockTicker
Stocks
Visualizza una finestra di dialogo in cui è possibile aggiungere o rimuovere i simboli delle azioni da monitorare. La finestra di dialogo è inizializzata con l'elenco corrente dei simboli delle azioni.Update Now
Aggiorna le informazioni di Borsa dal Web.Properties
La finestra di dialogo Properties dispone di tre pagine delle proprietà relative ai colori, ai tipi di caratteri e alle proprietà personalizzate. Se nella finestra di dialogo Properties non sono disponibili le pagine relative ai colori e ai tipi di caratteri, verificare di aver registrato msstkprp.dll.È possibile modificare le proprietà seguenti:
Ticker Speed Spostare il dispositivo di scorrimento per aumentare o ridurre la velocità con cui le informazioni di Borsa scorrono da destra a sinistra.
Update Interval Minuti intercorrenti tra due aggiornamenti successivi.
ISAPI Extension DLL URL Immettere l'URL completo della DLL di estensione ISAPI. Alla fine dell'URL aggiungere il testo ?QueryForStock?Symbol=.
Per indicare correttamente l'URL della DLL di estensione ISAPI, è necessario includere anche il componente responsabile della restituzione dei dati HTML contenenti le informazioni sulle azioni.
About Stock Ticker
Consente di visualizzare la finestra di dialogo contenente le informazioni relative a Stock Ticker.Stay On Top
Consente di impostare la visualizzazione di StockTicker in primo piano rispetto alle altre applicazioni. Se l'opzione non è attivata, StockTicker può essere nascosto da altre applicazioni.
Funzionalità utilizzate da StockTicker
Oggetto COM ATL
Oggetto finestra di dialogo ATL
Controllo ATL
Classi Internet (WinInet) MFC
DLL di estensione MFC ISAPI
Punti di connessione
Persistenza
Enumeratori personalizzati
Libreria standard di C++
Componenti di StockTicker
In questa sezione vengono fornite informazioni dettagliate sui componenti di StockTicker.
Componente Stock Quotes
Il componente condiviso, l'oggetto ATL, viene creato con la creazione guidata di un progetto ATL e si basa sul supporto WinInet di MFC e altre classi di utilità. Stock Quotes consente di tenere traccia dei titoli azionari da monitorare e di aggiornare le informazioni di Borsa recuperate da Internet. Questo componente può essere utilizzato per eseguire aggiornamenti in modo sincrono e asincrono. Chiamando il metodo StartUpdating, viene creato un thread figlio e la funzione viene restituita immediatamente. Il thread figlio crea un timer e rimane in attesa fino allo scadere dell'intervallo di aggiornamento. Quindi richiede un altro aggiornamento al componente Stock Quotes. Nelle chiamate successive a Update, viene passato un messaggio thread al thread figlio, con il quale viene indicata la necessità di un aggiornamento, quindi Update viene restituita immediatamente. In modalità sincrona, Update rimane bloccata fino a quando l'operazione di download non è stata completata.Il componente Stock Quotes tiene traccia degli oggetti origine dati di Borsa, che rappresentano i siti Web da cui vengono recuperate le informazioni. Quando le informazioni di Borsa vengono aggiornate, il componente Stock Quotes esegue una scansione dell'elenco delle origini dati e tenta di eseguire il download delle informazioni. Se il tentativo con la prima origine fallisce, viene avviato il download dall'origine successiva. Se non è possibile scaricare informazioni da nessuna delle origini dati, nella finestra del programma verrà visualizzato <NA> accanto al simbolo di ciascuna azione.
I dati di Borsa vengono scaricati dal sito Web in formato HTML e devono essere analizzati per individuare il prezzo corrente e la variazione rispetto all'ultimo aggiornamento. L'operazione di analisi viene gestita da Stock Quotes mediante la ricerca di due parole chiave, ad esempio Current: o Change:. Il componente legge i dati che seguono le parole chiave per rilevare se si tratta di un numero frazionario o decimale.
Poiché i siti Web sulle quotazioni di Borsa possono modificare la modalità di presentazione dei dati, può essere necessario modificare l'algoritmo utilizzato da Stock Quotes per il recupero delle informazioni.
Per ulteriori istruzioni su come aggiungere origini dati di Borsa personali, vedere le sezioni successive.
DLL di estensione ISAPI
L'origine dati di Borsa predefinita è la DLL di estensione ISAPI locale. La DLL di estensione ISAPI non restituisce però dati di Borsa reali. In risposta a una richiesta di dati, la DDL controlla se il simbolo dell'azione specificata è incluso nel proprio elenco di titoli azionari conosciuti. Se il simbolo è presente nell'elenco, i dati vengono recuperati e il prezzo azionario corrente viene aumentato o diminuito in modo casuale. Se il simbolo non è presente, viene aggiunto nell'elenco e viene fissato un prezzo iniziale.Controllo Stock Ticker
Questo controllo viene creato tramite la creazione guidata di un progetto ATL e consente di facilitare l'esecuzione di alcune operazioni mediante l'utilizzo di MFC.Il controllo può essere utilizzato anche indipendentemente da StockTicker.
Il controllo Stock Ticker si basa sul componente Stock Quotes per gestire le informazioni di Borsa e gli aggiornamenti dei dati. Il componente Stock Quotes viene richiamato anche nel momento in cui è necessario salvare il controllo stesso.
All'avvio, Stock Ticker crea il componente Stock Quotes e richiede l'inizio dell'attività di aggiornamento delle informazioni di Borsa. Avvia quindi un timer utilizzato per il ciclo di disegno/rendering. Quando i dati di Borsa sono stati aggiornati, il controllo viene informato dal componente Stock Quotes tramite un punto di connessione. A questo punto, le informazioni di Borsa vengono recuperate dal componente Stock Quotes e vengono organizzate in una stringa formattata per la visualizzazione nel controllo, dove i dati scorrono da destra a sinistra.
Contenitore Stock Ticker
Il contenitore Stock Ticker è un contenitore di controlli ActiveX MFC creato con la Creazione guidata applicazione MFC. Le dimensioni e la posizione del contenitore vengono salvate al momento della chiusura e vengono ripristinate al riavvio.Nel contenitore viene inoltre eseguita la gestione dei menu di StockTicker.
Parole chiave
Nell'esempio vengono illustrate le seguenti parole chiave:
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
Nota: |
---|
Alcuni esempi, tra cui il presente, non sono stati cambiati per riflettere le modifiche apportate alle procedure guidate, alle librerie e al compilatore di Visual C++, tuttavia forniscono comunque le istruzioni per completare l'attività desiderata. |