Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Nota: |
|---|
È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++. |
Microsoft Visual C++ .NET 2002 presenta molte nuove funzionalità e numerosi miglioramenti.
Codice gestito e destinazione di .NET Framework
Programmazione con attributi
Compilatore Visual C++, linker e linguaggio Visual C++
Ambiente di sviluppo
Editor di risorse
Librerie
Distribuzione e ridistribuzione di un'applicazione
Esempi di Visual C++ .NET
Codice gestito e destinazione di .NET Framework
In Visual C++ vengono introdotti due modi di scrivere il codice gestito, entrambi progettati per semplificare la programmazione COM e consentire ai programmi di accedere ai servizi forniti da .NET Common Language Runtime, come le procedure di Garbage Collection e l'interoperabilità dei linguaggi.
Estensioni gestite per C++: utilizzare queste estensioni per continuare a scrivere il codice C++ nei programmi esistenti.
Visual C#: è un nuovo linguaggio di programmazione semplice, indipendente dai tipi e orientato agli oggetti. Evoluzione di C e C++, C# è stato progettato per semplificare la creazione di nuove applicazioni di .NET Framework.
Programmazione con attributi
Gli attributi costituiscono un metodo rapido ed efficiente per semplificare la programmazione COM in Visual C++. Gli attributi, come le parole chiave C++, sono utilizzati nei file di origine e interpretati dal compilatore. Consentono di modificare il comportamento del codice esistente e persino di inserire un codice framework aggiuntivo per eseguire attività di base, come l'implementazione dei controlli ActiveX, la creazione di una class factory o la formattazione di un comando di database. È possibile applicare gli attributi pressoché a qualsiasi oggetto Visual C++, come classi, membri di dati e funzioni membro o inserirli nel codice sorgente come istruzioni autonome.
Nella Guida in linea di Visual C++ sono presenti procedure dettagliate relative agli attributi comprendenti vari aspetti della programmazione con attributi.
Compilatore Visual C++, linker e linguaggio Visual C++
Le funzionalità di compilatore, linker, altri strumenti di generazione e linguaggio Visual C++ sono nuove per Visual C++ .NET. Va segnalato inoltre l'aggiornamento della libreria standard di C++.
Compilatore
Problemi di compatibilità standard in Visual C++.
Opzione del compilatore /AI.
Opzione del compilatore /clr.
Opzione del compilatore /FU.
Opzione del compilatore /Fx.
Opzione del compilatore /GH.
L'opzione del compilatore /Gi è stata rimossa; il compilatore Visual C++ non esegue più compilazione incrementale. L'opzione /Gi verrà ignorata dal compilatore in modo invisibile all'utente.
L'opzione del compilatore /GD è stata rimossa.
Opzione del compilatore /GL.
Opzione del compilatore /GS.
Nuove parole chiave associate alle estensioni gestite per C++.
L'opzione /Qlfist è ora documentata.
/O1 e /O2 ora utilizzano /GF invece di /Gf.
/Ox, /O1 e /O2 ora utilizzano /Ob2 invece di /Ob1.
Opzione del compilatore /RTC.
Opzione del compilatore /showIncludes.
L'opzione del compilatore /w ora consente di specificare il comportamento di determinati avvisi.
L'opzione del compilatore /Wall consente di attivare tutti gli avvisi, compresi quelli disattivati per impostazione predefinita.
Opzione del compilatore /WL.
Opzione del compilatore /Wp64.
Opzione del compilatore /Y.
Opzione del compilatore /Zc:forScope.
Opzione del compilatore /Zc:wchar_t.
Elenco di avvisi disattivati per impostazione predefinita.
Espressioni booleane di tipo bool anziché BOOL.
Linker
Opzione del linker /ALLOWBIND.
Opzione del linker /ASSEMBLYMODULE.
Opzione del linker /ASSEMBLYRESOURCE.
L'opzione del linker /COMMENT è obsoleta. Utilizzare il pragma comment.
L'utilità CVPACK è stata rimossa.
L'opzione del linker /DEBUGTYPE è stata rimossa. Il supporto di simboli in formato COFF non è più presente; i simboli devono ora essere inseriti in file pdb.
L'opzione del linker /GPSIZE è stata rimossa. Il linker determina l'allocazione ottimale per le variabili comuni (elementi di dati globali non inizializzati) in base alla presenza di rilocazioni relative a GP ai dati.
Opzione del linker /IDLOUT.
Opzione del linker /IGNOREIDL.
/LINK50COMPAT è stata rimossa. Le librerie di importazione create con Visual C++ .NET sono compatibili con Visual C++ 6.0.
Opzione del linker /LTCG.
/MAPINFO:FIXUPS è stata rimossa.
Opzione del linker /MIDL.
Opzione del linker /NOASSEMBLY.
L'opzione del linker /PDB:NONE è stata rimossa. Le informazioni di debug nel file exe non sono più supportate.
Opzione del linker /PDBSTRIPPED.
L'opzione del linker /PDBTYPE è stata rimossa. Le informazioni di debug vengono inserite in un unico file PDB.
L'opzione del linker /PROFILE è stata rimossa. Se si utilizza un profiler di altri produttori che richiede /PROFILE, utilizzare invece /FIXED:NO. In questa versione il linker accetterà comunque /PROFILE come sinonimo di /FIXED:NO.
Il profiler del codice sorgente, un'utilità del linker, è stato rimosso.
Opzione del linker /TLBID.
Opzione del linker /TLBOUT.
Opzione del linker /TSAWARE.
L'opzione del linker /WARN è stata rimossa.
Dumpbin
Opzione /CLRHEADER.
L'opzione /IMPORTS per l'utilità DUMPBIN accetta ora un parametro facoltativo che consente di visualizzare le importazioni da una DLL specificata.
Opzione /PDBPATH.
I parametri /RAWDATA vengono rinominati, ma la sintassi delle release precedenti rimane valida.
Opzione /UNWINDINFO.
Linguaggio Visual C++
La parola chiave _AddressOfReturnAddress è ora documentata.
Parola chiave __alignof.
Vengono ora supportati i tipi covarianti restituiti dalle funzioni.
Parola chiave __declspec(align).
Parola chiave __declspec(deprecated).
Parola chiave __declspec(noinline).
La parola chiave __declspec(selectany) supporta ora gli oggetti allocati dinamicamente, ossia oggetti inizializzati da un costruttore.
Parola chiave __event.
L'istruzione for in /Ze è stata modificata per aderire meglio al comportamento standard.
Parole chiave __if_exists e __if_not_exists
Parola chiave __interface.
Sono ora supportati i blocchi function-try.
Tipo di dati __m64
Tipo di dati __m128.
Tipo di dati __m128d.
Tipo di dati __m128i.
Intrinseci SSE2, SSE e MMX.
Parola chiave __super.
La parola chiave template consente ora i parametri di template.
Sintassi throw(...).
Intrinseco del compilatore __assume.
Intrinseco del compilatore __debugbreak.
Intrinseco del compilatore __noop.
Override espliciti.
Il limite sui livelli di parentesi nidificate in un'unica espressione è pari a 256.
La parola chiave _ReturnAddress è ora documentata.
Parola chiave __sealed.
Parola chiave __w64.
wchar_t è ora un tipo di dati nativo.
Nuove parole chiave associate alle estensioni gestite per C++.
Preprocessore
Pragma conform.
Macro predefinita __COUNTER__.
Pragma deprecated.
Macro predefinita __FUNCDNAME__.
Macro predefinita __FUNCSIG__.
Macro predefinita __FUNCTION__.
Direttiva #import:
È ora possibile specificare librerie dei tipi per progid o libid.
Di seguito sono elencati i nuovi attributi contenuti nella direttiva #import:
embedded_idl
no_dual_interfaces
no_smartpointers
Direttiva del preprocessore _MANAGED.
Pragma gestiti e non gestiti.
Il pragma pack dispone ora di un'opzione show per visualizzare il valore di pack corrente.
pop_macro è ora documentata.
push_macro è ora documentata.
Pragma runtime_checks.
Pragma section.
Direttiva #using.
Direttiva del preprocessore __WCHAR_T_DEFINED.
Ambiente di sviluppo
Le seguenti modifiche e funzionalità relative all'ambiente di sviluppo costituiscono altre novità di Visual C++ .NET.
Visualizzazione classi è stata estesa.
Esclusione di file durante il controllo delle dipendenze (nuova procedura).
La finestra Proprietà fornisce una griglia personalizzabile per la visualizzazione e la modifica delle proprietà di oggetti nel progetto.
Le pagine delle proprietà del progetto consentono di specificare le impostazioni di generazione per i progetti.
Le procedure guidate sono ora progettate in HTML e JScript, con file di testo di supporto, per rendere le procedure guidate personalizzate più flessibili ed estensibili.
La barra delle procedure guidate e la Creazione guidata classe sono state rimosse.
La personalizzazione del processo di generazione è un nuovo evento di pre-generazione.
La procedura guidata di creazione di nuovi database è stata rimossa da Visual C++ .NET.
L'esportazione di un makefile NMAKE non è più disponibile. Utilizzare le opzioni della riga di comando devenv per generare un progetto Visual C++ dalla riga di comando.
Le opzioni /Gf dei progetti Visual C++ 6.0 che utilizzano /Gf e che vengono importati nella nuova versione verranno convertite in /GF.
Editor di risorse
Barra degli strumenti dell'editor di immagini e selettore di opzioni
La barra degli strumenti dell'editor di immagini è denominata Grafica in Visual C++ 6.0. I pulsanti della barra degli strumenti sono pressoché gli stessi (strumenti per disegnare, dipingere, immettere testo, cancellare e modificare le visualizzazioni), ma il comportamento e la presentazione della barra degli strumenti sono stati leggermente modificati.
In Visual C++ 6.0 la barra degli strumenti Grafica era inizialmente una finestra ancorata sulla sinistra dell'area di lavoro e il selettore di opzioni veniva visualizzato sotto forma di casella nella barra degli strumenti. In Visual C++ .NET, la barra degli strumenti dell'editor di immagini viene visualizzata nella parte superiore dell'area di lavoro. Il selettore di opzioni viene ora visualizzato all'estremità destra della barra degli strumenti dell'editor di immagini come un pulsante con freccia a discesa. L'icona sul pulsante del selettore di opzioni varia a seconda dello strumento selezionato.
Finestra di dialogo Strumento Testo sulla barra degli strumenti dell'editor di immagini
In Visual Studio .NET il comportamento della finestra di dialogo Strumento Testo è stato modificato rispetto a Visual C++ 6.0.
Azione |
Risultato in Visual C++ 6.0 |
Risultato in Visual Studio .NET |
|---|---|---|
Premere INVIO |
Veniva immessa una nuova riga nel testo. |
Consente di uscire da Strumento Testo e di salvare le modifiche. |
Fare clic sul pulsante Chiudi |
Consentiva di uscire da Strumento Testo e salvare le modifiche. |
Consente di uscire da Strumento Testo e di salvare le modifiche. |
Premere ESC |
Consentiva di uscire da Strumento Testo e salvare le modifiche. |
Consente di uscire da Strumento Testo e di ignorare le modifiche. |
Premere MAIUSC + INVIO |
Non applicabile |
Immette una nuova riga nel testo. |
Premere CTRL + INVIO |
Non applicabile |
Immette una nuova riga nel testo. |
Con queste modifiche, il comportamento di Strumento Testo è reso più simile alle finestre di dialogo standard e agli altri strumenti dell'editor di immagini.
Librerie
Nota: |
|---|
È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++. |
Le librerie indicate di seguito e incluse in Visual C++ .NET sono nuove o sono state modificate.
ATL (Active Template Library)
Sono state modificate le impostazioni predefinite dei progetti ATL.
Altri argomenti correlati relativi ai metodi ATL contengono esempi di codice.
Supporto per insiemi ed enumeratori: ICollectionOnSTLImpl, IEnumOnSTLImpl, CComEnumImpl, CComEnumOnSTL, CComEnum
La nuova classe CImage fornisce il supporto avanzato per le bitmap, compresa la possibilità di caricare e salvare immagini nei formati JPEG, GIF, BMP e PNG (Portable Network Graphics).
Nuove classi per la gestione di matrici, elenchi e strutture: CAtlArray, CAtlList, CAtlMap, CRBMap e CRBMultiMap.
Nuove classi e macro per la conversione di stringhe.
Classi di utilità: CAdapt.
Hosting di controlli ActiveX: IAxWinAmbientDispatch, IAxWinHostWindow, CAxWindow2
Miglioramenti a CComBSTR e CComVariant
Nuove macro: OBJECT_ENTRY_AUTO e OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO
Creazione di oggetti semplificata: CComCoClass::CreateInstance
Supporto per debug migliorato: _ATL_DEBUG_INTERFACES
Supporto del Registro di sistema per i valori REG_MULTI_SZ: CRegKey
Nuove classi di sicurezza: CAcl, CDacl, CSacl, CSecurityAttributes, CSecurityDesc, CSid, CTokenGroups e CTokenPrivileges.
Nuove classi di gestione delle matrici: CSimpleArray, CSimpleMap, CComSafeArray, CComSafeArrayBound.
Una classe oggetto Currency: CComCurrency.
Le macro ATL riportate di seguito devono essere considerate obsolete: atlTraceFlags, ATLTrace, BEGIN_OBJECT_MAP, OBJECT_ENTRY, END_OBJECT_MAP.
Sono stati sostituiti diversi metodi ATL.
La funzionalità di CComModule è stata distribuita in diverse nuove classi.
ATL Server
ATL Server è un insieme di classi C++ native che consente agli sviluppatori di creare applicazioni Web, servizi Web XML e altre applicazioni server. Molte classi possono inoltre essere utilizzate in applicazioni o componenti client.
Libreria di runtime C
Funzioni di controllo degli errori di runtime
L'operatore new è in grado di generare un'eccezione o di restituire zero se l'allocazione di memoria ha esito negativo.
Recuperare dagli overflow dello stack con _resetstkoflw.
Nuove funzioni per la gestione di date posteriori all'anno 2038:
_ctime64
_wfindnext64
_gmtime64
_wstat64
_wctime64
_fstat64
_localtime64
_time64
_findfirst64
_ftime64
_mktime64
_utime64
_wfindfirst64
_futime64
_stat64
_wutime64
_findnext64
Configurare i controlli dell'heap di debug con _CrtSetDbgFlag.
Determinare i tipi di blocchi e sottoblocchi _CrtReportBlockType
Costanti Math
Nuove funzioni di caratteri estesi:
_cwprintf
_putwch
_putws
_wtof
Nuove versioni __int64 delle funzioni stringa:
_strtoi64
_strtoui64
_wctoi64
_wcstoui64
Nuove versioni Unicode delle funzioni console:
_getwch
_ungetwch
cgetws
_getwche
_cwscanf
Nuove funzioni stringa per calcolare il numero di caratteri necessari per stampare i dati formattati:
_scprintf
_scwprintf
_vscprintf
_vscwprintf
_snscanf
_snwscanf
Funzioni di allineamento dei dati.
_set_security_error_handler, per la registrazione di un gestore errori di sicurezza.
Dato il tempo richiesto per il rilascio di C99, questa versione di Visual C++ non è conforme a tale standard.
Nuove funzioni di scambio di byte: _byteswap_uint64, _byteswap_ulong, _byteswap_ushort.
_set_SSE2_enable per utilizzare le istruzioni SSE2.
_CrtSetReportHook2.
Libreria MFC (Microsoft Foundation Class)
Negli argomenti correlati a MFC vengono forniti centinaia di nuovi esempi di codice.
Cast statico e mappe messaggi MFC: a partire da Visual C++ .NET, MFC consente un controllo più accurato dei tipi restituiti e dei tipi dei parametri delle funzioni di gestore messaggi. Con questo nuovo comportamento, lo sviluppatore riceve la notifica dei potenziali problemi sotto forma di messaggio di errore relativo ai gestori messaggi potenzialmente non sicuri. MFC utilizza cast statici per ON_MESSAGE, ON_REGISTERED_MESSAGE, ON_THREAD_MESSAGE e ON_REGISTERED_THREAD_MESSAGE.
Ad esempio, in passato era possibile utilizzare una funzione membro che restituiva void invece di LRESULT per ON_MESSAGE o ON_REGISTERED_MESSAGE ed effettuare la compilazione senza errori. Con Visual C++ .NET, il potenziale errore di cast viene rilevato e segnalato. Lo sviluppatore è in grado di risolvere il potenziale problema sostituendo il tipo restituito (con LRESULT) e ripetere la compilazione.
Componente di modifica DHTML: CHtmlEditCtrl, CHtmlEditView, CHtmlEditDoc
Finestre di dialogo DHTML: CDHtmlDialog, CMultiPageDHtmlDialog
Supporto ISAPI per analizzare gli elenchi di argomenti: CHttpArg, CHttpArgList
Supporto per controlli privi di finestra: COleControlSite, COleControlContainer e COccManager
Supporto migliorato per l'utilizzo della Guida in linea HTML in un'applicazione MFC.
Finestra delle proprietà di stampa di Windows 2000: CPrintDialogEx
Supporto DAO: nella Creazione guidata applicazione MFC di Visual C++ e nella Creazione guidata applicazione DLL MFC non sono più supportati i progetti di database DAO. È ancora possibile aggiungere le classi derivate da DAO tramite Aggiunta guidata classe. Si consiglia di utilizzare OLE DB oppure ODBC per i nuovi progetti di C++ nativo e di utilizzare DAO solo per la manutenzione delle applicazioni già esistenti.
TRACE0, TRACE1, TRACE2 e TRACE3 sono ora considerati obsoleti; utilizzare ATLTRACE2. TRACE ha ora la stessa funzionalità di ATLTRACE2.
Quando si seleziona un carattere per la finestra di dialogo, scegliere MS Shell Dlg e non caratteri MS Sans Serif o Helv. Nelle versioni precedenti di MFC, i caratteri MS Sans Serif o Helv venivano sostituiti automaticamente con DEFAULT_GUI_FONT o con il carattere di sistema. Questa funzionalità non è più disponibile.
Supporto avanzato per risorse localizzate nelle DLL satellite.
Modelli OLE DB
In Visual C++ sono disponibili i seguenti modelli OLE DB:
Nuove classi consumer: CDataConnection, CDynamicAccessor, CDynamicParameterAccessor, CDynamicStringAccessor, CDynamicStringAccessorA, CDynamicStringAccessorW, CStreamRowset, CXMLAccessor.
Nuove macro consumer: le macro COLUMN_NAME* per l'associazione a una colonna del database per nome e le macro BLOB* per l'associazione di oggetti BLOB (binary large object).
Nuove classi provider: IDBSchemaRowsetImpl, IErrorRecordsImpl, IRowsetChangeImpl, IRowsetCreatorImpl, IRowsetNotifyCP, IRowsetNotifyImpl, IRowsetLocateImpl, IRowsetUpdateImpl.
Nuovi tipi di dati a 64 bit
I metodi di varie classi di modelli OLE DB sono stati modificati per utilizzare i nuovi tipi di dati a 64 bit invece di quelli precedenti a 32 bit. La documentazione è stata aggiornata per riflettere queste modifiche. In caso di discrepanza tra la documentazione e i file di intestazione (atldb.h, atldbcli.h e atldbsch.h), i file di intestazione contengono i tipi di parametri più aggiornati.
Classi condivise
In ogni programma Visual C++ è ora possibile utilizzare alcune classi nuove e modificate.
Libreria standard di C++
La libreria standard di C++ è stata aggiornata:
Classe hash_map
Classe hash_set
Supporto facoltativo della gestione delle eccezioni.
Formattazione migliorata del codice (leggibilità).
Supporto DLL migliorato (passaggio di oggetti che superano i limiti dei processi).
Supporto multithreading migliorato.
Conformità allo standard migliorata.
Libreria iostream precedente
In Visual C++ l'uso della libreria iostream precedente è obsoleto. Ogni volta che si utilizza una funzione iostream si riceve un avviso. È possibile che la libreria iostream precedente venga rimossa in una successiva versione di rilascio.
Distribuzione e ridistribuzione di un'applicazione
Nota: |
|---|
È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++. |
Per ridistribuire un'applicazione Visual C++, è possibile utilizzare la distribuzione in Visual Studio che consente di creare eseguibili di installazione, preparare file ed eseguire la pubblicazione su siti Web.
Se non si intende utilizzare la distribuzione di Visual Studio e si dispone di un'applicazione Visual C++ nativa, ovvero non gestita, è possibile individuare le dipendenze dell'applicazione e sviluppare un proprio processo di installazione.
Esempi di Visual C++ .NET
Nota: |
|---|
È possibile che alcune funzionalità citate in questo argomento non siano più presenti nella versione attuale di Visual C++. Per ulteriori informazioni, vedere Novità di Visual C++. |
Visual C++ .NET comprende una serie di esempi nuovi relativi alle seguenti aree:
Libreria di runtime C
ATL Server
Attributi
Estensioni gestite per C++
MASM
Debug
Creazione guidata personalizzata
Nota:Poiché l'architettura della procedura guidata è cambiata, gli esempi forniti in precedenza per le creazioni guidate personalizzate sono stati ritirati e ne sono stati forniti di nuovi.
Modello di codice
Modello di progetto
Gestione degli eventi
Internazionale
Applicazione Tailspin Toys
In Visual C++ .NET inoltre sono inclusi nuovi esempi per le aree indicate di seguito, oltre agli esempi forniti nelle versioni precedenti:
MFC
ATL
Supporto COM
Libreria STL (Standard Template Library)