C++/CX
C++/CX (extensions de composant) est une extension du langage pour compilateurs C++ de Microsoft qui permet aux programmeurs C++ d'écrire des programmes pour la plateforme Windows Runtime , ou l'API WinRT.

Les extensions de langage empruntent la syntaxe de C++/CLI , mais ciblent le code natif Universal Windows Platform au lieu du Common Language Runtime et du code managé. 
Il apporte un ensemble d'abstractions de syntaxe et de bibliothèque qui projettent le modèle de programmation WinRT basé sur le sous-ensemble WRL de COM d'une manière intuitive pour les codeurs d'extensions gérés C++/CLI.

Il est possible d'appeler Windows Runtime à partir d'ISO C++ natif via la bibliothèque de modèles C++ (WRL) Windows Runtime de bas niveau.

L'Extension de la syntaxe 
 C++/CX introduit des extensions de syntaxe pour la programmation pour Windows Runtime. La syntaxe globale non spécifique à la plate-forme est compatible avec la norme C++11.

Les objets 
 Les objets WinRT sont créés, ou activés, en utilisant ref new et assignés aux variables déclarées avec la notation ^ héritée de C++/CLI. Une variable WinRT est simplement une paire de pointeur vers une table de méthode virtuelle et un pointeur vers les données internes de l'objet.

Comptage de référence 
 Un objet WinRT est compté par référence et gère donc de la même manière que les objets C++ ordinaires inclus dans shared ptrs. Un objet sera supprimé s'il n'y a plus de références qui y conduisent.

Il n'y a pas de collecte des ordures impliqués. Néanmoins, le mot-clé gcnew a été réservé pour une utilisation future éventuelle.

Les Classes

Classes d'exécution 
 Il existe des types spéciaux de classes d'exécution qui peuvent contenir des constructions d'extension de composant. Ils sont simplement appelés ref classes , car ils sont déclarés en utilisant ref class.

Classes partielles 
 C++/CX introduit le concept de classes partielles. Cette fonctionnalité permet de diviser une seule classe sur plusieurs fichiers, principalement pour permettre aux outils de conception d'interface utilisateur graphique XAML de générer automatiquement du code dans un fichier distinct afin de ne pas casser la logique écrite par le développeur. Les parties sont ensuite fusionnées lors de la compilation.

Les langages .NET comme C# ont cette fonctionnalité depuis de nombreuses années. Les classes partielles ne sont pas encore entrées dans la norme C++ et ne peuvent donc pas être utilisées en C++11 pur.

 Un fichier qui est généré et mis à jour par le concepteur de l'interface graphique, ne devrait donc pas être modifié par le programmeur. Notez le mot clé partial partial.

// foo.private.h
#pragma once

partial ref class foo
{
private:
   int id_;
   Platform::String^ name_;
};

Le fichier où le programmeur écrit la logique de l'interface utilisateur, l'en-tête dans lequel le compilateur a généré une partie de la classe est importé. Notez que le mot-clé partial n'est pas nécessaire.

// foo.public.h
#pragma once
#include "foo.private.h"

ref class foo
{
public:
   int GetId();
   Platform::String^ GetName();
};

C'est le fichier dans lequel les membres de la classe partielle sont implémentés.

// foo.cpp
#include "pch.h"
#include "foo.public.h"

int foo::GetId() {return id_;}
Platform::String^ foo::GetName {return name_;}

Les génériques 
 Windows Runtime et donc C++/CX prennent en charge les génériques basés sur l'exécution. Les informations de type générique sont contenues dans les métadonnées et instanciées lors de l'exécution, contrairement aux modèles C++ qui sont des constructions à la compilation. Les deux sont pris en charge par le compilateur et peuvent être combinés.
generic<typename T> 
public ref class bag 
{
     property T Item;
};

Les métadonnées 
 Tous les programmes WinRT exposent leurs classes et membres déclarés via des métadonnées. Le format est le même que celui qui a été standardisé dans le cadre de l'infrastructure CLI), la norme créée à partir du Framework .NET. Pour cette raison, le code peut être partagé entre C++/CX, les langages CLI et JavaScript qui ciblent Windows Runtime.

Bibliothèque d'exécution 
Le C++/CX possède un ensemble de bibliothèques qui ciblent Windows Runtime. Ils aident à faire le lien entre la fonctionnalité de la bibliothèque standard C++ et WinRT.

Préprocesseur de détection basée sur l' 
Vous pouvez détecter si l'extension C++/CX est activée en testant l'existence du symbole de préprocesseur__cplusplus_winrt .

Liens externes 

 À l'intérieur du C++/CX de Conception Visual C++ Blog de l'Équipe
 GoingNative 3: Le C++/CX Épisode avec Marian Luparu - Canal 9
 WinRT et Fichiers winmd - Marius Bancila Blog
 Visual C++ de Référence du Langage (C++/CX)

C++
Compilateur C++
C + + / CX ( extensions de composant ) est une extension de le langage pour compilateurs C+ + de Microsoft qui permet à les programmeurs C+ + d' écrire de les programmes pour la plateforme Windows Runtime , ou l' API WinRT . Les extensions de langage empruntent la syntaxe de C++ / CLI , mais ciblent le code natif Universal Windows Platform à le lieu de le Common Language Runtime et de le code managé . Il apporte un ensemble d' abstractions de syntaxe et de bibliothèque qui projettent le modèle de programmation WinRT basé sur le sous-ensemble WRL de COM d' une manière intuitive pour les codeurs d' extensions gérés C++ / CLI . Il est possible d' appeler Windows Runtime à partir d' ISO C+ + natif via la bibliothèque de modèles C++ ( WRL ) Windows Runtime de bas niveau . L' Extension de la syntaxe C+ + / CX introduit de les extensions de syntaxe pour la programmation pour Windows Runtime . La syntaxe globale non spécifique à la plate-forme est compatible avec la norme C++11 . Les objets Les objets WinRT sont créés , ou activés , en utilisant ref new et assignés à les variables déclarées avec la notation ^ héritée de C++ / CLI . Une variable WinRT est simplement une paire de pointeur vers une table de méthode virtuelle et un pointeur vers les données internes de l' objet . Comptage de référence Un objet WinRT est compté par référence et gère donc de la même manière que les objets C++ ordinaires inclus dans shared ptrs . Un objet sera supprimé s' il n' y a plus de références qui y conduisent . Il n' y a pas de collecte de les ordures impliqués . Néanmoins , le mot-clé gcnew a été réservé pour une utilisation future éventuelle . Les Classes Classes d' exécution Il existe de les types spéciaux de classes d' exécution qui peuvent contenir de les constructions d' extension de composant . Ils sont simplement appelés ref classes , car ils sont déclarés en utilisant ref class . Classes partielles C+ + / CX introduit le concept de classes partielles . Cette fonctionnalité permet de diviser une seule classe sur plusieurs fichiers , principalement pour permettre à les outils de conception d' interface utilisateur graphique XAML de générer automatiquement de le code dans un fichier distinct afin de ne pas casser la logique écrite par le développeur . Les parties sont ensuite fusionnées lors de la compilation . Les langages \ .NET comme C # ont cette fonctionnalité depuis de nombreuses années . Les classes partielles ne sont pas encore entrées dans la norme C+ + et ne peuvent donc pas être utilisées en C++11 pur . Un fichier qui est généré et mis à jour par le concepteur de l' interface graphique , ne devrait donc pas être modifié par le programmeur . Notez le mot clé partial partial . / / foo.private .h # pragma once partial ref class foo { private : int id_ ; Platform ::String^ name_; } ; Le fichier où le programmeur écrit la logique de l' interface utilisateur , l' en-tête dans lequel le compilateur a généré une partie de la classe est importé . Notez que le mot-clé partial n' est pas nécessaire . / / foo.public .h # pragma once # include " foo.private .h " ref class foo { public: int GetId ( ) ; Platform ::String^ GetName ( ); } ; C' est le fichier dans lequel les membres de la classe partielle sont implémentés . / / foo.cpp # include " pch.h " # include " foo.public .h " int foo :: GetId ( ) {return id_;} Platform :: String^ foo :: GetName {return name_ ;} Les génériques Windows Runtime et donc C+ + / CX prennent en charge les génériques basés sur l' exécution . Les informations de type générique sont contenues dans les métadonnées et instanciées lors de l' exécution , contrairement à les modèles C+ + qui sont de les constructions à la compilation . Les deux sont pris en charge par le compilateur et peuvent être combinés . generic< typename T> public ref class bag { property T Item; } ; Les métadonnées Tous les programmes WinRT exposent leurs classes et membres déclarés via de les métadonnées . Le format est le même que celui qui a été standardisé dans le cadre de l' infrastructure CLI ) , la norme créée à partir de le Framework \ .NET . Pour cette raison , le code peut être partagé entre C++ / CX , les langages CLI et JavaScript qui ciblent Windows Runtime . Bibliothèque d' exécution Le C+ + / CX possède un ensemble de bibliothèques qui ciblent Windows Runtime . Ils aident à faire le lien entre la fonctionnalité de la bibliothèque standard C++ et WinRT . Préprocesseur de détection basée sur l' Vous pouvez détecter si l' extension C+ + / CX est activée en testant l' existence de le symbole de préprocesseur__cplusplus_winrt . Liens externes À l' intérieur de le C++ / CX de Conception Visual C ++ Blog de l' Équipe GoingNative Le C+ + / CX Épisode avec Marian Luparu - Canal 9 WinRT et Fichiers winmd - Marius Bancila Blog Visual C+ + de Référence de le Langage ( C++ / CX ) C + + Compilateur C + +