FAQ C++/CLI et VC++.Net
FAQ C++/CLI et VC++.NetConsultez toutes les FAQ
Nombre d'auteurs : 29, nombre de questions : 248, création le 22 février 2013
Cette faq a été réalisée pour répondre aux questions les plus fréquemment posées concernant le C++/CLI et l'intéraction de Visual C++ et des MFC avec le framework .Net 2.0.
Je tiens à souligner que cette faq ne garantit en aucun cas que les informations qu'elle contient sont correctes ; Les auteurs font le maximum, mais l'erreur est humaine. Si vous trouvez une erreur, ou que vous souhaitez devenir redacteur, lisez ceci.
Sur ce, je vous souhaite une bonne lecture.
FAQ lues fois.
- 1. Informations générales (4)
- 2. Généralités sur le framework .Net
(8)
- Qu'est-ce que le framework .Net 2 ?
- Qu'est-ce que le garbage collector ?
- Qu'est-ce qu'It Just Work ?
- Qu'est-ce que le CLR (Common Language Runtime)?
- Qu'est-ce que le CLS (Common Language Specification)?
- Qu'est-ce que le CTS (Common Type System)?
- Qu'est-ce que le CLI (Common Language Infrastructure)?
- Qu'est-ce que le MSIL ?
- 3. Le langage C++/CLI
(61)
- 3.1. Généralités (1)
- 3.2. Syntaxe
(20)
- Qu'est-ce qu'un handle d'objet (^) ?
- Qu'est-ce qu'une tracking reference (%) ?
- Comment utiliser le référencement et le déférencement ?
- Comment modifier la valeur d'un objet pointé par un handle passé en paramètre d'une fonction ?
- Qu'est-ce qu'un pointeur interne ?
- Qu'est-ce qu'un pointeur épingle (pin_ptr) ?
- Comment allouer un objet managé avec gcnew ?
- Quel est la différence entre le destructeur et le finalizer ?
- Qu'est-ce qu'un espace de nom (namespace) ?
- Comment créer une fonction avec un nombre d'arguments variable ?
- Quelles sont les visibilités ajoutées par le C++/CLI ?
- Qu'est ce qu'un delegate ?
- Qu'est ce qu'un Event ?
- Comment faire de la destruction déterministe en C++/CLI (auto_handle) ?
- Comment utiliser un mot clé comme nom de variable ?
- Peut-on utiliser l'opérateur ?? du C# ?
- Peut-on utiliser des classes partielles (partial) ?
- 3.2.1. Cast (3)
- 3.3. Tableaux, Collections et énumérations (5)
- 3.4. Classes, Interfaces, héritage et types de données
(22)
- Comment définir une classe virtuelle pure (abstract) ?
- Comment surcharger une méthode abstraite ou virtuelle (override) ?
- Comment définir une classe ou une méthode sealed ?
- Comment rompre le polymorphisme d'une fonction (new) ?
- Comment implémenter un constructeur de copie ?
- Comment implémenter opérateur d'affectation ?
- 3.4.1. Les types de données
(12)
- Qu'est-ce qu'une classe managée ?
- Qu'est-ce qu'une classe non managée ?
- Qu'est-ce qu'un type de référence ?
- Qu'est-ce qu'un type de valeur ?
- Quelles sont les équivalences des types natifs dans le framework .Net ?
- Comment créer une énumération C++/CLI ?
- Comment définir un literal ?
- Comment définir une variable initonly ?
- Comment savoir si un handle est nul ?
- 3.4.1.1. Variables et fonctions statiques (3)
- 3.4.2. Les interfaces (4)
- 3.5. La surcharge d'opérateur (5)
- 3.6. Les types et fonctions génériques (5)
- 3.7. Compatibilité d'assignation et comparaison de d'identité de types (3)
- 4. Mixer du C++/CLI avec du code Win32 ou MFC
(24)
- Comment ajouter une form .Net (winform) à mon application MFC ?
- Comment utiliser un contrôle standard .Net dans une application MFC ?
- Comment ajouter un contrôle utilisateur .Net (UserControl) à mon application MFC ?
- Comment utiliser une Winform (UserControl) en tant que vue dans mon application MFC ?
- Comment communiquer entre le document MFC et la vue Winform dans mon application MFC ?
- Comment intercepter les événements d'une vue Winform dans mon application MFC ?
- Comment intercepter les événements MFC dans ma vue Winform ?
- Comment gérer la cohabitation de deux fonctions ayant le même nom dans l'API Win32 et le framework.net 1.x ?
- Comment éviter la redéfinition des objets COM ?
- Comment compiler du code natif ?
- Que faire avec l'erreur d'éditions de liens LNK1313 ?
- Que faire avec l'erreur d'édition de liens LNK2031 ?
- Comment utiliser des variables natives dans une classe managée ?
- Comment utiliser des objets managés dans une classe native ?
- Quelle est la différence entre gcroot et auto_gcroot ?
- Comment savoir si un handle géré par le template gcroot est nul ?
- 4.1. Conversions
(6)
- Comment convertir une String ^ en char * ?
- Comment convertir une String ^ en wchar_t * ?
- Comment convertir un char * en String ^ ?
- Comment convertir un string de la STL en String ^ ?
- Comment convertir une String ^ en string de la STL ?
- Comment convertir un objet d'un type de base en un objet d'un autre type de base ?
- 4.2. Intéropérabilité (2)
- 5. Intéraction du C++/CLI avec le framework .Net
(140)
- 5.1. Système
(24)
- Comment obtenir la version de mon application ?
- Comment obtenir la version du .NET Framework en cours ?
- Comment obtenir la version de l'OS en cours ?
- Comment obtenir le nom de l'utilisateur dont la session est en cours ?
- Comment obtenir le nom de la machine ?
- Comment obtenir la quantité de mémoire physique allouée à mon application ?
- Comment obtenir la ligne de commande de l'application ?
- Comment obtenir les variables d'environnement ?
- Comment générer des nombres aléatoires ?
- Comment lire et écrire des données sur la console ?
- Comment fonctionne le Garbage Collector ?
- Comment forcer la libération de la mémoire par le Garbage Collector ?
- Comment puis-je appeler une fonction présente dans une DLL win32 ?
- Comment mesurer précisément le temps d'exécution d'une partie de votre code?
- Comment remplacer un mot (insensible à la casse) par un autre grâce aux expressions régulières ?
- Comment utiliser une ressource dans mon exécutable ?
- Comment écrire dans le journal des évènements des services Windows ?
- Comment connaître le nombre d'écrans connectés à l'ordinateur ?
- Comment connaître le nombre de processeurs que possède la machine ?
- Comment tester si l'utilisateur de la session fait partie du groupe d'un domaine ?
- Comment déterminer le mode de démarrage de la machine ?
- Comment créer une exception personnalisée ?
- Comment obtenir la description d'une extension, comme dans l'explorateur de Windows ?
- Comment ajouter le numéro de version à mon exécutable/assembly ?
- 5.2. WinForms
(39)
- Comment créer et afficher une nouvelle Winform ?
- Comment changer le curseur de mon application ?
- Comment annuler la fermeture de la session Windows ?
- Comment permettre à l'utilisateur de choisir un répertoire ?
- Comment permettre à l'utilisateur de choisir un fichier pour ouvrir un document ?
- Comment permettre à l'utilisateur de choisir un fichier pour enregistrer un document ?
- Comment accèder à une méthode publique d'une form à partir d'une autre form créé par la première ?
- Comment récupérer une valeur d'un contrôle depuis une autre Form (inclusions croisées et déclaration anticipée) ?
- Comment suspendre la capture d'un évènement ?
- Comment rendre un contrôle transparent ?
- Comment détecter la fermeture intempestive de l'application ?
- Comment créer des contrôles dynamiquement et gérer leurs événements ?
- Comment modifier dynamiquement l'icône d'un NotifyIcon ?
- Comment déplacer un contrôle avec la souris ?
- Comment charger une image dans un pictureBox tout en libérant les ressources ?
- Que faire avec l'erreur de compilation C3352 ?
- Comment mettre à jour un contrôle d'une winform depuis un thread ?
- Comment forcer une fenêtre à apparaître à l'avant plan ?
- Comment intercepter n'importe quelle exception non catchée dans une application Windows ?
- Comment connaître la longueur en pixel d'une chaîne de caractères ?
- Comment lister toutes les forms d'un projet ?
- Comment utiliser un raccourci clavier sur une form pour effectuer une action ?
- Comment fermer un formulaire en fondu ?
- Comment effectuer un binding bidirectionnel ?
- Comment écrire des informations dans une console dans mon projet Windows Forms ?
- 5.2.1. TextBox
(6)
- Comment intercepter les touches du clavier dans mon TextBox ?
- Comment ne saisir que des caractères numériques dans mon TextBox ?
- Comment assurer la saisie de nombres corrects dans une textbox avec les exceptions ?
- Comment assurer la saisie de nombres corrects dans une textbox avec les expressions régulières ?
- Comment mettre en place un système de suggestion ?
- Comment placer le curseur à la fin d'un textbox multiligne ?
- 5.2.2. TreeView (3)
- 5.2.3. ListView (2)
- 5.2.4. Label (1)
- 5.2.5. Button (2)
- 5.3. GDI (4)
- 5.4. Fichiers, Répertoires, Disques
(29)
- Comment créer, copier, déplacer, supprimer un fichier ?
- Comment obtenir les attributs d'un fichier ou d'un répertoire?
- Comment obtenir la liste des fichiers et des sous-répertoires d'un répertoire ?
- Comment lire et écrire dans un fichier texte ?
- Comment lire et écrire dans un fichier binaire ?
- Comment surveiller les modifications d'un fichier grâce aux notifications système?
- Comment récupérer le nom d'un fichier, lorsque j'ai le chemin complet ?
- Comment afficher ou écrire correctement les caractères accentués dans mes fichiers ?
- Comment tester l'existence d'un fichier ?
- Comment savoir si un fichier est en lecture seule ?
- Comment obtenir le répertoire d'exécution de mon application ?
- Comment obtenir le répertoire courant ?
- Comment obtenir le répertoire système ?
- Comment obtenir les chemins des répertoires spéciaux comme "Mes Documents" ?
- Comment obtenir la liste des lecteurs logiques ?
- Comment obtenir les informations d'un disque ?
- Comment connaître le pourcentage d'espace disque de vos disques durs ?
- Comment détecter si il y a un cd/dvd dans un lecteur ?
- Comment lister toutes les entrées d'un répertoire ?
- Comment concaténer de manière intelligente un path et un nom de fichier ?
- Comment calculer la taille d'un répertoire ?
- Comment récuperer le path de l'application ?
- 5.4.1. Compression (2)
- 5.4.2. XML
(5)
- Comment lire un fichier Xml avec les classes de l'espace de noms System::Xml::Xpath ?
- Comment créer un XmlNamespaceManager en se basant sur un fichier Xml ?
- Comment valider un fichier XML avec un schéma XSD ?
- Comment sérialiser et désérialiser un objet simple en XML ?
- Comment sérialiser un objet en ignorant les références circulaires ?
- 5.5. Thread, Processus
(10)
- Comment créer et lancer un thread ?
- Comment passer un ou plusieurs paramètres à un thread ?
- Comment arrêter un thread ?
- Comment changer le nom du thread courant ?
- Comment ne lancer qu'une seule instance de mon application ?
- Comment lancer un processus ?
- Comment ouvrir un fichier avec l'application associée à son extension ?
- Comment rediriger la sortie standard d'un processus ?
- Comment lister les processus en cours d'exécution ?
- Comment arrêter un processus ?
- 5.6. Réseau (4)
- 5.7. ADO.NET
(9)
- Qu'est-ce que ADO.NET ?
- Quelles classes utiliser pour me connecter à ma base de donnée ?
- Comment se connecter à une base de données ?
- Comment exécuter une requête SELECT ?
- Comment exécuter une requête non SELECT ?
- Comment exécuter une requête paramétrée ?
- Comment exécuter une requête dont le texte comprend une quote simple ?
- Comment puis-je exécuter une procédure stockée ?
- Comment écrire le contenu de ma table dans un fichier XML ?
- 5.8. Instanciation dynamique (2)
- 5.9. Office
(9)
- Comment mon application .NET peut interagir avec les applications et les documents de la suite Microsoft Office ?
- Qu'est-ce que l'automation Office ?
- Que sont les Primary Interop Assemblies (PIA) ?
- Comment installer les Primary Interop Assemblies ?
- Que sont les Visual Studio Tools for Office (VSTO) ?
- Comment installer les Visual Studio Tools for Office ?
- Où puis-je trouver de la documentation sur l'automation Office ?
- Comment l'automation dans mon application peut-elle être compatible avec plusieurs versions d'Office ?
- Comment libérer les ressources d'une automation Office ?
- 5.10. Divers
(10)
- Peut-on utiliser le Compact Framework avec le C++/CLI ?
- Comment calculer la différence de temps entre deux dates ?
- Comment mesurer un intervalle de temps avec précision ?
- Comment modifier le texte de la barre de titre (fenêtre et console)?
- Comment utiliser le cryptage avec l'algorithme Rijndael ?
- Comment travailler avec les fichiers de configuration ?
- Comment lire une valeur dans un fichier de configuration ?
- Comment écrire une valeur dans un fichier de configuration ?
- Comment crypter un fichier de configuration automatiquement en RSA ?
- Comment retirer les accents d'une chaîne de caractères ?
- 5.1. Système
(24)
- 6. IDE
(11)
- Comment commenter un bloc de code en une seule fois ?
- Comment changer les raccourcis clavier de visual studio ?
- Comment spécifier les arguments de la ligne de commande en mode DEBUG ?
- Comment détecter la compilation avec un mode /clr ?
- Comment référencer une assembly externe dans son projet (#using) ?
- Comment activer la numérotation des lignes dans un fichier source ?
- 6.1. Modes de compilation (5)