Share to: share facebook share twitter share wa share telegram print page

C /CX

C++/CX (C++ component extensions) is a language projection for Microsoft's Windows Runtime platform. It takes the form of a language extension for C++ compilers, and it enables C++ programmers to write programs that call Windows Runtime (WinRT) APIs. C++/CX is superseded by the C++/WinRT language projection, which is not an extension to the C++ language; rather, it's an entirely standard modern ISO C++17 header-file-based library.[1]

The language extensions borrow syntax from C++/CLI but target the Windows Runtime Universal Windows Platform native code instead of the Common Language Runtime and managed code. It brings a set of syntax and library abstractions that project COM's WRL subset-based WinRT programming model in a way that is intuitive to C++/CLI managed extensions' coders.

It is possible to call the Windows Runtime from native ISO C++ via the lower level Windows Runtime C++ Template Library (WRL). However, WRL is also superseded by C++/WinRT.[1]

Extension syntax

C++/CX introduces syntax extensions for programming for the Windows Runtime. The overall non platform-specific syntax is compatible with the C++11 standard.

Objects

WinRT objects are created, or activated, using ref new and assigned to variables declared with the ^ (hat) notation inherited from C++/CLI.

Foo^ foo = ref new Foo();

A WinRT variable is simply a pair of a pointer to virtual method table and pointer to the object's internal data.

Reference counting

A WinRT object is reference counted and thus handles similarly to ordinary C++ objects enclosed in shared_ptrs. An object will be deleted when there are no remaining references that lead to it.

There is no garbage collection involved. Nevertheless, the keyword gcnew has been reserved for possible future use.

Classes

Runtime classes

There are special kinds of runtime classes that may contain component extension constructs. These are simply referred to as ref classes because they are declared using ref class.

public ref class MyClass
{

};
Partial classes

C++/CX introduces the concept of partial classes. The feature allows a single class definition to be split across multiple files, mainly to enable the XAML graphical user interface design tools to auto-generate code in a separate file in order not to break the logic written by the developer. The parts are later merged at compilation.

.NET languages like C# have had this feature for many years. Partial classes have not yet made it into the C++ standard and cannot therefore be used, even in C++20.

A file that is generated and updated by the GUI-designer, and thus should not be modified by the programmer. Note the keyword partial.

// foo.private.h
#pragma once

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

The file where the programmer writes user-interface logic. The header in which the compiler-generated part of the class is defined is imported. Note that the keyword partial is not necessary.

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

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

This is the file in which the members of the partial class are implemented.

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

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

Generics

Windows Runtime and thus C++/CX supports runtime-based generics. Generic type information is contained in the metadata and instantiated at runtime, unlike C++ templates which are compile-time constructs. Both are supported by the compiler and can be combined.

generic<typename T> 
public ref class bag 
{
     property T Item;
};

Metadata

All WinRT programs expose their declared classes and members through metadata. The format is the same that was standardized as part of the Common Language Infrastructure (CLI), the standard created from the .NET Framework. Because of this, code can be shared across C++/CX, CLI languages, and JavaScript that target Windows Runtime.

Runtime library

The C++/CX has a set of libraries that target the Windows Runtime. These help bridge the functionality of the C++ Standard Library and WinRT.

Preprocessor-based detection

You can detect if C++/CX extension is turned on by testing existence of __cplusplus_winrt preprocessor symbol.

#ifdef __cplusplus_winrt
// C++/CX specific code goes here...
#endif

See also

References

  1. ^ a b Introduction to C++/WinRT docs.microsoft.com

Read other articles:

För andra betydelser, se Cypern (olika betydelser). Republiken CypernΚυπριακή ΔημοκρατίαKıbrıs Cumhuriyeti Flagga Statsvapen Valspråk: inget Nationalsång: Ymnos pros tin Eleftherian/Ύμνος εις την Ελευθερίαν(Hymn till friheten)Cyperns nationalsång, Ymnos pros tin Eleftherian/Ύμνος εις την Ελευθερίαν (instrumentalisk). läge Huvudstad(även största stad) Nicosia Officiella språk grekiska, turkiska Statsskick republik …

This list is incomplete; you can help by adding missing items. (August 2008) Cinema ofthe Philippines Films before the 2010s Pre-1940   1940s   1950s   1960s1970s   1980s   1990s   2000s 2010s 2010   2011   2012   2013   2014 2015   2016   2017   2018   2019 2020s 2020   2021   2022   2023   2024 vte A list of the early pre-war films produced in the Philippines from 1912 to 1939. For an A-Z see Category:Phi…

Alsco Uniforms 300SirkuitLas Vegas Motor SpeedwayLas Vegas, NevadaSponsorAlsco[1]Lomba pertama1997Jarak tempuh300 mil (482,803 km)Lap200Tahap 1: 45Tahap 2: 45Tahap akhir: 110Nama sebelumnyaLas Vegas 300 (1997) Sam’s Town Las Vegas 300 (1998) Sam's Town 300 (1999-2013) Boyd Gaming 300 (2014-2020) Alsco Uniforms 300 adalah balapan mobil NASCAR Xfinity Series yang diadakan setiap tahun di Las Vegas Motor Speedway di Las Vegas, Nevada. Lomba ini pertama kali terjadi pada tahun 1997. P…

Artikel ini sudah memiliki referensi, tetapi tidak disertai kutipan yang cukup. Anda dapat membantu mengembangkan artikel ini dengan menambahkan lebih banyak kutipan pada teks artikel. (November 2023) (Pelajari cara dan kapan saatnya untuk menghapus pesan templat ini) Tentara Nasional IndonesiaAngkatan DaratLambang TNI Angkatan DaratDibentuk15 Desember 1945 (1945-12-15)(78 tahun, 3 bulan)Negara IndonesiaAliansiTentara Nasional IndonesiaTipe unitAngkatan DaratPeranMenegakkan k…

1972 filmCrime BossDirected byAlberto De MartinoScreenplay by Lucio Manlio Battistrada Alberto De Martino[1] Story by Lucio Manlio Battisrada Luigi Mordini[1] Produced byGino Mordini[1]Starring Antonio Sabàto Telly Savalas Paola Tedesco CinematographyAristide Massaccesi[1]Edited byOtello Colangeli[1]Music byFrancesco De Masi[1]ProductioncompanyClaudia Cinematografica[1]Distributed byP.A.C.Release date 8 August 1972 (1972-08-…

Pour les articles homonymes, voir Département de l'Environnement. Département de l’Environnement, de l’Alimentation et des Affaires ruralesDepartment for Environment, Food and Rural Affairs Situation Création 2001 Type Département exécutif Siège Cité de WestminsterLondres ( Royaume-Uni) Coordonnées 51° 29′ 46″ N, 0° 07′ 38″ O Langue anglais Organisation Effectifs 9 000 Secrétaire d'État Stephen Barclay Organisations affiliées Gouvernement du…

العلاقات الأنغولية الفنزويلية أنغولا فنزويلا   أنغولا   فنزويلا تعديل مصدري - تعديل   العلاقات الأنغولية الفنزويلية هي العلاقات الثنائية التي تجمع بين أنغولا وفنزويلا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقا…

Cet article est une ébauche concernant la Nouvelle-Zélande. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. New Zealand Post (en)Tukurau Aotearoa (mi) Création 1er avril 1987 Siège social Wellington Nouvelle-Zélande Activité Service de collecte, de tri, de transport et de distribution d'envois postaux, de courrier sous toutes ses formes, d'objets et de marchandises Filiales Kiwibank Effectif 7 652 Si…

Disambiguazione – Se stai cercando altri significati, vedi Lecce (disambigua). Leccecomune Lecce – Veduta LocalizzazioneStato Italia Regione Puglia Provincia Lecce AmministrazioneSindacoCarlo Salvemini (indipendente di centro-sinistra) dal 1-6-2019 TerritorioCoordinate40°21′07.24″N 18°10′08.9″E / 40.352011°N 18.169139°E40.352011; 18.169139 (Lecce)Coordinate: 40°21′07.24″N 18°10′08.9″E / 40.352011°N 18.169139°…

95th Bombardment Wing redirects here. For the 95th Combat Bombardment Wing of World War II, see 95th Combat Bombardment Wing. 95th Air Base WingRobert Downey Jr. shakes hands with Col. Jerry Gandy, commander of the 95th Air Base Wing during the filming of Iron Man 2 at Edwards Air Force BaseActive1942–1945; 1947–1949; 1952–1966; 1966–1976;, 1994–2012Country United StatesBranch United States Air ForceRoleBase SupportPart ofANickname(s)First B-17's over Berlin – 1944 (WW…

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Птиц…

Dimba Nazionalità  Brasile Altezza 174[1] cm Peso 73[1] kg Calcio Ruolo Attaccante Termine carriera 2015 Carriera Squadre di club1 1994-1995 Sobradinho51 (8)1995 Brasília3 (3)1996 Gama5 (5)1996 Sobradinho12 (7)1997-1998 Botafogo40 (12)1998-1999 América-MG50 (0)1999 Portuguesa12 (2)1999 Bahia9 (0)2000 Leça7 (1)2000-2001 Botafogo7 (1)2002 Gama24 (17)2002-2003 Goiás65 (48)2004 Al-Ittihād18 (15)2004-2005 …

B

  此條目介紹的是拉丁字母中的第2个字母。关于其他用法,请见「B (消歧义)」。   提示:此条目页的主题不是希腊字母Β、西里尔字母В、Б、Ъ、Ь或德语字母ẞ、ß。 BB b(见下)用法書寫系統拉丁字母英文字母ISO基本拉丁字母(英语:ISO basic Latin alphabet)类型全音素文字相关所属語言拉丁语读音方法 [b][p][ɓ](适应变体)Unicode编码U+0042, U+0062字母顺位2数值 2歷史發展…

Arsène Wenger Informasi pribadiTanggal lahir 22 Oktober 1949 (umur 74)Tempat lahir Strasbourg, PrancisTinggi 6 ft 3 in (1,91 m)[1]Posisi bermain Gelandang[2]Informasi klubKlub saat ini -Karier junior1963–1969 FC Duttlenheim1969–1973 MutzigKarier senior*Tahun Tim Tampil (Gol)1969–1973 Mutzig 120 (121)1973–1975 Mulhouse 56 (40)1975–1978 ASPV Strasbourg 70 (80)1978–1981 RC Strasbourg 78 (60)Total 324 (301)Kepelatihan1984–1987 Nancy-Lorraine1987–1…

نوشاتل زاماكس الاسم الكامل نادي نوشاتل زاماكس تأسس عام 1912 الملعب ملعب لا مالاديير  البلد سويسرا  الدوري دوري التحدي السويسري  الإدارة المدرب ستيفان هينتشوز (5 يوليو 2020–)  الموقع الرسمي http://fodbold.aabsport.dk الطقم الأساسي الطقم الاحتياطي تعديل مصدري - تعديل   نادي نوشات…

Calgary's 1988–89 Stanley Cup banner. The Calgary Flames are a professional ice hockey team based in Calgary, Alberta, Canada. The team is a member of the Pacific Division in the Western Conference of the National Hockey League (NHL). The Flames arrived in Calgary in 1980 after transferring from the city of Atlanta, Georgia, where they were known as the Atlanta Flames from their founding in 1972 until relocation.[1] The 2021–22 season is the 41st season of play, and 42nd year in Calg…

American module of the International Space Station UnityUnity as pictured by Space Shuttle EndeavourModule statisticsCOSPAR ID1998-069F [1]Launch date4 December 1998,08:35:34 UTCLaunch vehicleSpace Shuttle EndeavourDocked6 December 1998Mass11,612 kg (25,600 lb)Length5.47 m (17.9 ft)Diameter4.57 m (15.0 ft)ConfigurationThis image of the International Space Station (ISS) was taken when Space Shuttle Atlantis (STS-106) approached the ISS. At the bottom is the R…

FirfolcomuneFirfol – Veduta LocalizzazioneStato Francia Regione Normandia Dipartimento Calvados ArrondissementLisieux CantonePont-l'Évêque TerritorioCoordinate49°09′N 0°19′E / 49.15°N 0.316667°E49.15; 0.316667 (Firfol)Coordinate: 49°09′N 0°19′E / 49.15°N 0.316667°E49.15; 0.316667 (Firfol) Superficie5,03 km² Abitanti456[1] (2009) Densità90,66 ab./km² Altre informazioniCod. postale14100 Fuso orarioUTC+1 Codice IN…

この項目には、一部のコンピュータや閲覧ソフトで表示できない文字が含まれています(詳細)。 数字の大字(だいじ)は、漢数字の一種。通常用いる単純な字形の漢数字(小字)の代わりに同じ音の別の漢字を用いるものである。 概要 壱万円日本銀行券(「壱」が大字) 弐千円日本銀行券(「弐」が大字) 漢数字には「一」「二」「三」と続く小字と、「壱」「弐」…

Otto Karl Wilhelm NeurathOtto NeurathLahir(1882-12-10)10 Desember 1882Wina, Kekaisaran Austria-Hungaria (sekarang Austria)Meninggal22 Desember 1945(1945-12-22) (umur 63)Oxford, Britania RayaAlmamaterUniversitas BerlinEraFilsafat abad ke-20KawasanFilsafat BaratAliranAnalitisMinat utamaFilsafat ilmuGagasan pentingFisikalisme[1]Protokollsatz (pernyataan protokol) Dipengaruhi Ernst Mach, James George Frazer Memengaruhi Lingkar Berlin, Lingkar Wina, John O'Neill Otto Neura…

Kembali kehalaman sebelumnya