Modifications apportées au produit : Visual C++ .NET 2002
Mise à jour : novembre 2007
Remarque : |
---|
Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Nouveautés de Visual C++. |
Microsoft Visual C++ .NET 2002 offre de nombreuses fonctionnalités et améliorations nouvelles :
Code managé et ciblage du .NET Framework
Programmation par attributs
Compilateur Visual C++, éditeur de liens et langage Visual C++
Environnement de développement
Éditeurs de ressources
Bibliothèques
Déploiement et redistribution d'une application
Exemples Visual C++ .NET
Code managé et ciblage du .NET Framework
Visual C++ offre deux manières d'écrire du code managé. Toutes deux visent à simplifier la programmation COM et à permettre à vos programmes d'accéder aux services fournis par le .NET Common Language Runtime, tels que le garbage collection et l'interopérabilité des langages.
Extensions managées pour C++ En utilisant ces extensions, vous pouvez continuer à écrire du code C++ dans des programmes existants.
Visual C# C# est un nouveau langage de programmation simple, de type sécurisé et orienté objet. Évolution de C et C++, C# est destiné aux développeurs souhaitant créer de nouvelles applications .NET Framework.
Programmation par attributs
Les attributs fournissent une méthode efficace et rapide pour simplifier la programmation COM dans Visual C++. Des attributs, comme les mots clés C++, sont utilisés dans vos fichiers sources et interprétés par le compilateur. Les attributs peuvent modifier le comportement de votre code existant et même insérer du code d'infrastructure supplémentaire pour accomplir des tâches de base, telles que l'implémentation d'un contrôle ActiveX, la création d'une fabrique de classe ou la mise en forme d'une commande de base de données. Vous pouvez appliquer les attributs à presque n'importe quel objet Visual C++, comme les classes, les données membres et les fonctions membres, ou vous pouvez insérer des attributs dans votre code source sous forme d'instructions autonomes.
L'aide de Visual C++ contient des procédures pas à pas traitant différents aspects de la programmation par attributs.
Compilateur Visual C++, éditeur de liens et langage Visual C++
Le compilateur, l'éditeur de liens, les autres outils de génération et les fonctionnalités du langage Visual C++ présentés ci-dessous sont nouveaux dans Visual C++ .NET. Il existe également une mise à jour de la bibliothèque C++ standard.
Compilateur
Problèmes de conformité aux normes dans Visual C++.
Option du compilateur /AI.
Option du compilateur /clr.
Option du compilateur /FU.
Option du compilateur /Fx.
Option du compilateur /GH.
L'option de compilateur /Gi a été retirée du compilateur ; le compilateur Visual C++ n'effectue plus de compilation incrémentielle. /Gi est silencieusement ignoré par le compilateur.
L'option du compilateur /GD a été supprimée du compilateur.
Option du compilateur /GL.
Option du compilateur /GS.
Nouveaux mots clés associés aux extensions managées pour C++.
/Qlfist est maintenant documenté.
/O1 et /O2 utilisent maintenant /GF à la place de /Gf.
/Ox, /O1 et /O2 utilisent maintenant /Ob2 à la place de /Ob1.
Option du compilateur /RTC.
Option du compilateur /showIncludes.
L'option du compilateur /w vous permet maintenant de spécifier le comportement d'avertissements spécifiques.
L'option du compilateur /Wall vous permet maintenant d'activer tous les avertissements, notamment ceux qui sont désactivés par défaut.
Option du compilateur /WL.
Option du compilateur /Wp64.
Option du compilateur /Y.
Option du compilateur /Zc:forScope.
Option du compilateur /Zc:wchar_t.
Liste des avertissements désactivés par défaut.
Les expressions booléennes sont maintenant de type bool et non BOOL.
Éditeur de liens
Option de l'éditeur de liens /ALLOWBIND.
Option de l'éditeur de liens /ASSEMBLYMODULE.
Option de l'éditeur de liens /ASSEMBLYRESOURCE.
L'option de l'éditeur de liens /COMMENT est maintenant désapprouvée. Utilisez le pragma comment.
L'utilitaire CVPACK est retiré.
L'option de l'éditeur de liens /DEBUGTYPE a été supprimée. La prise en charge de symboles au format COFF est supprimée ; les symboles doivent dorénavant être placés dans des fichiers .pdb.
L'option de l'éditeur de liens /GPSIZE a été supprimée. L'éditeur de liens détermine maintenant l'emplacement optimal des variables communes (éléments de données globales non initialisés) en fonction de la présence de réadressages GP relatifs des données.
Option de l'éditeur de liens /IDLOUT.
Option de l'éditeur de liens /IGNOREIDL.
L'option /LINK50COMPAT a été supprimée. Les bibliothèques d'importation créées avec Visual C++ .NET sont compatibles avec Visual C++ 6.0.
Option de l'éditeur de liens /LTCG.
/MAPINFO:FIXUPS a été supprimé.
Option de l'éditeur de liens /MIDL.
Option de l'éditeur de liens /NOASSEMBLY.
L'option de l'éditeur de liens /PDB:NONE a été supprimée. Les informations de débogage dans le .exe ne sont plus prises en charge.
Option de l'éditeur de liens /PDBSTRIPPED.
L'option de l'éditeur de liens /PDBTYPE a été supprimée. Les informations de débogage seront placées dans un fichier .pdb unique.
L'option de l'éditeur de liens /PROFILE a été supprimée. Si vous utilisez un profileur tiers qui nécessite /PROFILE, vous devez utiliser à la place /FIXED: NO. Dans cette version, l'éditeur de liens accepte encore /PROFILE comme synonyme de /FIXED: NO.
Le générateur de profils source, un utilitaire de l'éditeur de liens, est supprimé.
Option de l'éditeur de liens /TLBID.
Option de l'éditeur de liens /TLBOUT.
Option de l'éditeur de liens /TSAWARE.
L'option de l'éditeur de liens /WARN a été supprimée.
Dumpbin
Option /CLRHEADER.
L'option /IMPORTS de l'utilitaire DUMPBIN accepte maintenant un paramètre optionnel qui vous permet d'afficher les importations d'une DLL spécifiée.
Option /PDBPATH.
Les paramètres /RAWDATA sont renommés, mais la syntaxe des versions précédentes est toujours valide.
Option /UNWINDINFO.
Langage Visual C++
Le mot clé _AddressOfReturnAddress est maintenant documenté.
Mot clé __alignof.
Les types de retour covariants sont maintenant pris en charge.
Mot clé __declspec(align).
Mot clé __declspec(deprecated).
Mot clé __declspec(noinline).
Le mot clé __declspec(selectany) prend maintenant en charge les objets alloués dynamiquement (objets initialisés par un constructeur).
Mot clé __event.
L'instruction for sous /Ze a été modifiée pour se conformer de manière plus stricte au comportement standard.
Mots clés __if_exists et __if_not_exists
Mot clé __interface.
Les blocs Function-try sont maintenant pris en charge.
Type de données __m64.
Type de données __m128.
Type de données __m128d.
Type de données __m128i.
Intrinsèques MMX, SSE et SSE2.
Mot clé __super.
Le mot clé template autorise désormais les modèles de paramètres.
Syntaxe throw(...).
Intrinsèque du compilateur __assume.
Intrinsèque du compilateur __debugbreak.
Intrinsèque du compilateur __noop.
Substitutions explicites.
Le nombre limite de niveaux de parenthèses imbriquées dans une expression unique est maintenant de 256.
Le mot clé _ReturnAddress est maintenant documenté.
Mot clé __sealed.
Mot clé __w64.
wchar_t est dorénavant un type de données natif.
Nouveaux mots clés associés aux extensions managées pour C++.
Préprocesseur
Pragma conform.
Macro prédéfinie __COUNTER__.
Pragma deprecated.
Macro prédéfinie __FUNCDNAME__.
Macro prédéfinie __FUNCSIG__.
Macro prédéfinie __FUNCTION__.
Directive #import :
Vous pouvez maintenant spécifier les bibliothèques de types par progid ou libid.
Les éléments suivants sont de nouveaux attributs dans la directive #import :
embedded_idl
no_dual_interfaces
no_smartpointers
Directive de préprocesseur _MANAGED.
Pragmas managés et non managés.
Le pragma pack possède dorénavant une option show pour afficher la valeur de pack actuelle.
pop_macro est maintenant documenté.
push_macro est maintenant documenté.
Pragma runtime_checks.
Pragma section.
Directive #using.
Directive de préprocesseur _WCHAR_T_DEFINED.
Environnement de développement
Les fonctionnalités et modifications de l'environnement de développement suivantes constituent des nouveautés pour Visual C++ .NET.
L'affichage de classes a été étendu.
Exclusion de fichiers lors de la vérification des dépendances (nouvelle procédure).
La fenêtre Propriétés fournit une grille personnalisable pour l'affichage et la modification de propriétés d'objets dans votre projet.
Les pages de propriétés du projet vous permettent de spécifier des paramètres de génération pour des projets.
Les Assistants sont maintenant conçus en HTML et en JScript, accompagnés de fichiers texte de support, afin de leur donner plus de souplesse et d'extensibilité.
WizardBar et ClassWizard ont été supprimés.
La personnalisation du processus de génération est un nouvel événement avant génération.
L'Assistant Nouvelle base de données a été supprimé de Visual C++ .NET.
L'exportation d'un makefile NMAKE n'est plus disponible. Utilisez des commutateurs de ligne de commande devenv pour générer un projet Visual C++ à partir de la ligne de commande.
Dans les projets Visual C++ 6.0 qui utilisent /Gf et qui sont importés dans la nouvelle version, les options /Gf seront converties en /GF.
Éditeurs de ressources
Barre d'outils Éditeur d'images et sélecteur d'options
La barre d'outils Éditeur d'images était qualifiée de barre d'outils Graphiques dans Visual C++ 6.0. Bien que les boutons sur la barre d'outils soient essentiellement les mêmes (outils de dessin, de peinture, de saisie de texte, d'effacement et de manipulation d'affichages), le comportement et la présentation de la barre d'outils ont changé légèrement.
Dans Visual C++ 6.0, la barre d'outils Graphiques était initialement une fenêtre ancrée sur le côté gauche de l'espace de travail et le sélecteur d'options prenait la forme d'une zone à l'intérieur de la barre d'outils. Dans Visual C++ .NET, la barre d'outils Éditeur d'images se trouve en haut de l'espace de travail. Le sélecteur d'options se trouve maintenant à l'extrême droite de la barre d'outils Éditeur d'images avec une flèche de déroulement. L'icône sur le bouton Sélecteur d'options change en fonction de l'outil que vous avez sélectionné.
La boîte de dialogue Outil texte sur la barre d'outils Éditeur d'images
Le comportement de la boîte de dialogue Outil texte a changé entre Visual C++ 6.0 et Visual Studio .NET.
Tâche |
Résultat dans Visual C++ 6.0 |
Résultat dans Visual Studio .NET |
---|---|---|
Appuyer sur ENTRÉE |
Entrait une nouvelle ligne dans le texte. |
Quitte l'Outil texte et valide les modifications. |
Cliquer sur le bouton Fermer |
Quittait l'Outil texte et validait les modifications. |
Quitte l'Outil texte et valide les modifications. |
Appuyer sur ÉCHAP |
Quittait l'Outil texte et validait les modifications. |
Quitte l'Outil texte et annule les modifications. |
Appuyer sur MAJ + ENTRÉE |
(Non applicable) |
Entre une nouvelle ligne dans le texte. |
Appuyer sur CTRL + ENTRÉE |
(Non applicable) |
Entre une nouvelle ligne dans le texte. |
Ces modifications confèrent à l'Outil texte un comportement plus proche de celui des boîtes de dialogue standard et des autres outils de l'Éditeur d'images.
Bibliothèques
Remarque : |
---|
Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Nouveautés de Visual C++. |
Les bibliothèques suivantes incluses dans Visual C++ .NET sont nouvelles ou modifiées.
Bibliothèque ATL (Active Template Library)
Les paramètres par défaut des projets ATL ont changé.
Davantage de rubriques de référence concernant les méthodes ATL contiennent des exemples de code.
Prise en charge des collections et des énumérateurs : ICollectionOnSTLImpl, IEnumOnSTLImpl, CComEnumImpl, CComEnumOnSTL, CComEnum
Une nouvelle classe, CImage, fournit une prise en charge améliorée des bitmaps, notamment la possibilité de charger et d'enregistrer des images aux formats JPEG, GIF, BMP et PNG (Portable Network Graphics).
Nouvelles classes de gestion de tableaux, listes et arborescences : CAtlArray, CAtlList, CAtlMap, CRBMap et CRBMultiMap.
Nouvelles macros et classes de conversion de chaînes.
Classes d'utilitaires : CAdapt
Contrôles ActiveX hébergeant : IAxWinAmbientDispatch, IAxWinHostWindow, CAxWindow2
Améliorations de CComBSTR et CComVariant
Nouvelles macros: OBJECT_ENTRY_AUTO et OBJECT_ENTRY_NON_CREATEABLE_EX_AUTO
Création d'objet simplifiée : CComCoClass::CreateInstance
Prise en charge du débogage améliorée : _ATL_DEBUG_INTERFACES
Prise en charge du Registre pour les valeurs REG_MULTI_SZ : CRegKey
Nouvelles classes de sécurité : CAcl, CDacl, CSacl, CSecurityAttributes, CSecurityDesc, CSid, CTokenGroups et CTokenPrivileges.
Nouvelles classes de gestion de tableau : CSimpleArray, CSimpleMap, CComSafeArray, CComSafeArrayBound.
Classe d'objets Currency : CComCurrency.
Les macros ATL suivantes doivent être considérées comme obsolètes : atlTraceFlags, ATLTrace, BEGIN_OBJECT_MAP, OBJECT_ENTRY, END_OBJECT_MAP.
Plusieurs méthodes ATL ont été remplacées.
Les fonctionnalités de CComModule ont été réparties en plusieurs classes nouvelles.
ATL Server
ATL Server est un ensemble de classes C++ natives qui permet aux développeurs de créer des applications Web, des services Web XML et d'autres applications serveur. De nombreuses classes peuvent également être utilisées dans des applications clientes ou des composants clients.
Bibliothèque Runtime C
Fonctions de vérification des erreurs d'exécution.
L'opérateur new peut lever une exception ou retourner zéro si l'allocation de mémoire échoue.
Récupération en cas de dépassement de capacité de la pile avec _resetstkoflw
Nouvelles fonctions permettant le traitement des dates postérieures à l'année 2038 :
_ctime64
_wfindnext64
_gmtime64
_wstat64
_wctime64
_fstat64
_localtime64
_time64
_findfirst64
_ftime64
_mktime64
_utime64
_wfindfirst64
_futime64
_stat64
_wutime64
_findnext64
Configuration des contrôles de tas de débogage avec _CrtSetDbgFlag.
Identification des types de bloc et de sous-bloc _CrtReportBlockType
Constantes mathématiques
Nouvelles fonctions de caractères larges :
_cwprintf
_putwch
_putws
_wtof
Nouvelles versions __int64 de fonctions de chaîne :
_strtoi64
_strtoui64
_wctoi64
_wcstoui64
Nouvelles versions Unicode de fonctions de console :
_getwch
_ungetwch
cgetws
_getwche
_cwscanf
Nouvelles fonctions de chaîne qui calculent le nombre de caractères requis pour imprimer des données mises en forme :
_scprintf
_scwprintf
_vscprintf
_vscwprintf
_snscanf
_snwscanf
Fonctions d'alignement des données.
_set_security_error_handler, pour enregistrer un gestionnaire d'erreurs de sécurité.
En raison du calendrier de diffusion de C99, cette version de Visual C++ n'est pas conforme à cette norme.
Nouvelles fonctions byte-swapping : _byteswap_uint64, _byteswap_ulong, _byteswap_ushort.
_set_SSE2_enable pour utiliser des instructions SSE2.
_CrtSetReportHook2.
Bibliothèque MFC (Microsoft Foundation Class)
Les rubriques de référence pour MFC contiennent des centaines de nouveaux exemples de code.
Casting statique et tables des messages MFC : depuis Visual C++ .NET, MFC assure un contrôle de type plus strict pour les types de retour et de paramètre des fonctions gestionnaires de messages. Ce nouveau comportement signale aux développeurs des problèmes potentiels en désignant au moyen de messages d'erreur les gestionnaires de messages non sécurisés. MFC utilise maintenant des castings statiques pour ON_MESSAGE, ON_REGISTERED_MESSAGE, ON_THREAD_MESSAGE et ON_REGISTERED_THREAD_MESSAGE.
Par exemple, un développeur pouvait jusqu'ici utiliser une fonction membre qui retournait void au lieu de LRESULT pour ON_MESSAGE ou ON_REGISTERED_MESSAGE et compiler sans erreur. Avec Visual C++ .NET, l'incident de casting potentiel est intercepté et marqué comme une erreur. Le développeur peut corriger le problème potentiel en remplaçant le type de retour (avec LRESULT) et en recompilant.
Composant d'édition DHTML : CHtmlEditCtrl, CHtmlEditView, CHtmlEditDoc
Boîtes de dialogue DHTML : CDHtmlDialog, CMultiPageDHtmlDialog
Prise en charge ISAPI pour l'analyse de listes d'arguments : CHttpArg, CHttpArgList
Prise en charge des contrôles sans fenêtre : COleControlSite, COleControlContainer et COccManager
Prise en charge améliorée de l'utilisation de l'aide HTML dans une application MFC.
Feuille de propriétés d'impression Windows 2000 : CPrintDialogEx.
Prise en charge DAO : l'Assistant Application MFC et l'Assistant DLL MFC de Visual C++ ne prennent plus en charge les projets de base de données DAO. Vous pouvez toujours ajouter des classes dérivées de DAO à l'aide de l'Assistant Ajout de classes. Microsoft recommande l'utilisation d'OLE DB ou d'ODBC pour les nouveaux projets C++ natifs. N'utilisez DAO que pour gérer vos applications existantes.
TRACE0, TRACE1, TRACE2 et TRACE3 sont désormais considérés comme obsolètes ; utilisez ATLTRACE2. TRACE dispose maintenant de la même fonctionnalité que ATLTRACE2.
Lors de la sélection d'une police de boîte de dialogue, utilisez les polices MS Shell Dlg, et non MS Sans Serif ou Helv. Les versions précédentes de MFC auraient remplacé automatiquement MS Sans Serif ou Helv par DEFAULT_GUI_FONT ou la police système, mais ce n'est plus le cas.
Prise en charge améliorée des ressources localisées situées dans des DLL satellites.
Modèles OLE DB
Les modèles OLE DB suivants sont fournis dans Visual C++ :
Nouvelles classes de consommateurs : CDataConnection, CDynamicAccessor, CDynamicParameterAccessor, CDynamicStringAccessor, CDynamicStringAccessorA, CDynamicStringAccessorW, CStreamRowset et CXMLAccessor.
Nouvelles macros de consommateurs : macros COLUMN_NAME* pour créer une liaison avec une colonne spécifique dans la base de données par nom et macros BLOB* pour la liaison d'objets binaires de grande taille (BLOB, Binary Large OBject).
Nouvelles classes de fournisseurs : IDBSchemaRowsetImpl, IErrorRecordsImpl, IRowsetChangeImpl, IRowsetCreatorImpl, IRowsetNotifyCP, IRowsetNotifyImpl, IRowsetLocateImpl et IRowsetUpdateImpl.
Nouveaux types de données 64 bits
Les méthodes dans plusieurs classes de modèles OLE DB ont été modifiées pour utiliser les nouveaux types de données 64 bits à la place des anciens types 32 bits. La documentation a été mise à jour en conséquence. En cas de différence entre la documentation et les fichiers d'en-tête (atldb.h, atldbcli.h et atldbsch.h), les fichiers d'en-tête contiennent les types de paramètres les plus récents.
Classes partagées
De nombreuses classes nouvelles et révisées peuvent maintenant être employées dans n'importe quel programme Visual C++.
Bibliothèque C++ standard
La bibliothèque C++ standard a été mise à jour :
Classe hash_map
Classe hash_set
Prise en charge en option de la gestion des exceptions.
Mise en forme améliorée du code (lisibilité).
Prise en charge améliorée des DLL (passage d'objets entre séparations de processus).
Prise en charge multithread améliorée.
Meilleure conformité avec la norme.
Ancienne bibliothèque iostream
Pour Visual C++, l'utilisation de l'ancienne bibliothèque iostream est désapprouvée ; vous obtiendrez un avertissement à chaque utilisation d'une fonction iostream. Il est possible que l'ancienne bibliothèque iostream soit supprimée dans une version ultérieure.
Déploiement et redistribution d'une application
Remarque : |
---|
Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Nouveautés de Visual C++. |
Pour redistribuer une application Visual C++, vous pouvez utiliser le déploiement dans Visual Studio, qui permet de créer des exécutables d'installation, des fichiers de lots et de publier sur des sites Web.
Si vous ne souhaitez pas utiliser le déploiement Visual Studio et que vous disposez d'une application Visual C++ (non managée) native, vous pouvez découvrir les dépendances de votre application et développer votre propre processus d'installation.
Exemples Visual C++ .NET
Remarque : |
---|
Il se peut que certaines fonctionnalités mentionnées dans cette rubrique ne soient pas encore opérationnelles dans la version actuelle de Visual C++. Pour plus d'informations, consultez Nouveautés de Visual C++. |
Visual C++ .NET inclut tous les nouveaux exemples dans les domaines suivants :
Bibliothèque Runtime C
ATL Server
Attributs
Extensions managées pour C++
MASM
Débogage
Assistant personnalisé
Remarque : L'architecture de l'Assistant ayant changé, les exemples précédemment fournis pour les Assistants personnalisés ont été supprimés pour être remplacés par d'autres.
Modèle de code
Modèle de projet
Gestion des événements
International
Application Tailspin Toys
En outre, Visual C++ .NET inclut de nouveaux exemples dans les domaines suivants, auxquels s'ajoutent les exemples disponibles dans les versions précédentes :
MFC
ATL
Prise en charge COM
Bibliothèque STL (Standard Template Library)