Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Důležité
V tomto kurzu se používá C++/CX. Společnost Microsoft vydala C++/WinRT: zcela standardní moderní projekci jazyka C++17 pro rozhraní API prostředí Windows Runtime (WinRT). Další informace o tomto jazyce najdete v tématu C++/WinRT.
Pomocí sady Microsoft Visual Studio můžete pomocí jazyka C++/CX vyvíjet aplikaci, která běží ve Windows s uživatelským rozhraním definovaným v jazyce XAML (Extensible Application Markup Language).
Poznámka:
Tento kurz používá Visual Studio Community 2019. Pokud používáte jinou verzi sady Visual Studio, může to vypadat trochu jinak.
Než začnete
- K dokončení tohoto kurzu musíte použít visual Studio Community nebo některou z verzí sady Visual Studio, která není community, na počítači se systémem Windows. Pro stažení viz Získat nástroje.
- Abyste mohli pokračovat, měli byste mít základní znalosti jazyka C++/CX, XAML a konceptů v přehledu XAML.
- Pokud chcete postup sledovat, měli byste použít výchozí rozložení okna v sadě Visual Studio. Pokud chcete obnovit výchozí rozložení, na řádku nabídek zvolte Okno>Obnovit rozložení okna.
Porovnání desktopových aplikací C++ s aplikacemi pro UPW
Pokud pocházíte z pozadí v desktopovém programování ve Windows v jazyce C++, pravděpodobně zjistíte, že některé aspekty psaní aplikací pro UPW jsou známé, ale jiné aspekty vyžadují určité učení.
Co je to stejné?
Můžete použít STL, CRT (s některými výjimkami) a jakoukoli jinou knihovnu C++, pokud kód volá pouze funkce Systému Windows, které jsou přístupné z prostředí Windows Runtime.
Pokud jste zvyklí na povrchy vizuálního návrhu, můžete stále používat návrháře integrovaného v sadě Microsoft Visual Studio nebo můžete použít plnohodnotnější Blend pro Visual Studio. Pokud jste zvyklí na kódování uživatelského rozhraní ručně, můžete kód XAML ručně zakódovat.
Pořád vytváříte aplikace, které používají typy operačního systému Windows a vlastní typy.
Stále používáte ladicí program ve Visual Studiu, profiler a další vývojové nástroje.
Stále vytváříte aplikace kompilované do nativního strojového kódu kompilátorem Visual C++. Aplikace pro UPW v C++/CX se nespouštějí ve spravovaném prostředí runtime.
Co je nového?
Principy návrhu aplikací pro UPW se velmi liší od principů návrhu pro desktopové aplikace. Ohraničení oken, popisky, dialogová okna atd., se zvýrazňují. Obsah je především. Velké aplikace pro UPW tyto principy začleňují od samého začátku fáze plánování.
K definování celého uživatelského rozhraní používáte XAML. Oddělení logiky uživatelského rozhraní a základního programu je v aplikaci pro UPW mnohem jasnější než v aplikaci MFC nebo Win32. Ostatní uživatelé můžou při práci na chování v souboru kódu pracovat na vzhledu uživatelského rozhraní v souboru XAML.
Primárně programujete na nové snadno ovladatelné rozhraní API orientované na objekty, prostředí Windows Runtime, i když na zařízeních s Windows Win32 je stále k dispozici pro některé funkce.
K využívání a vytváření objektů prostředí Windows Runtime použijete C++/CX. C++/CX umožňuje zpracování výjimek C++, delegáty, události a automatické počítání odkazů dynamicky vytvořených objektů. Při použití jazyka C++/CX jsou podrobnosti o základní architektuře COM a Windows skryté před kódem vaší aplikace. Pro více informací viz Jazyková referenční dokumentace C++/CX.
Aplikace se zkompiluje do balíčku, který obsahuje také metadata o typech, které vaše aplikace obsahuje, o prostředcích, které používá, a funkcích, které vyžaduje (přístup k souborům, přístup k internetu, přístup k fotoaparátu atd.).
V Microsoft Storu a Windows Phone Storu je vaše aplikace certifikačním procesem ověřena jako bezpečná a zpřístupněna milionům potenciálních zákazníků.
Aplikace Hello World Store v C++/CX
Naše první aplikace je "Hello World", která ukazuje některé základní funkce interaktivity, rozložení a stylů. Vytvoříme aplikaci ze šablony projektu univerzální aplikace pro Windows. Pokud jste předtím vyvinuli aplikace pro Windows 8.1 a Windows Phone 8.1, možná si pamatujete, že jste museli mít v sadě Visual Studio tři projekty, jednu pro aplikaci pro Windows, jednu pro aplikaci pro telefon a druhou se sdíleným kódem. Univerzální platforma Windows (UPW) umožňuje mít jenom jeden projekt, který běží na všech zařízeních, včetně stolních a přenosných počítačů s Windows, zařízení, jako jsou tablety, mobilní telefony, zařízení VR atd.
Začneme základy:
Jak vytvořit univerzální projekt Windows v sadě Visual Studio
Jak porozumět vytvořeným projektům a souborům
Jak porozumět rozšířením v rozšíření komponent Visual C++ (C++/CX) a kdy je použít.
Nejprve vytvořte řešení v sadě Visual Studio
V sadě Visual Studio na řádku nabídek zvolte Soubor>Nový projekt>....
V dialogovém okně Vytvořit nový projekt vyberte Prázdnou aplikaci (Univerzální Windows – C++/CX). Pokud tuto možnost nevidíte, ujistěte se, že máte nainstalované univerzální nástroje pro vývoj aplikací pro Windows. Pro více informací si přečtěte Nastavení prostředí.
Zvolte Další a zadejte název projektu. Pojmenujeme ji HelloWorld.
Zvolte tlačítko Vytvořit.
Poznámka:
Pokud jste visual Studio použili poprvé, může se zobrazit dialogové okno Nastavení s výzvou k povolení vývojářského režimu. Vývojářský režim je speciální nastavení, které umožňuje určité funkce, jako je například oprávnění spouštět aplikace přímo, a ne jenom ze Storu. Další informace si prosím přečtěte v části Jak povolit zařízení pro vývoj. Chcete-li pokračovat v tomto průvodci, vyberte Vývojářský režim, klikněte na tlačítko Ano a zavřete dialogové okno.
Soubory projektu byly vytvořeny.
Než začneme, podívejme se na to, co je v řešení.
Řešení univerzální aplikace se sbalenými uzly
O souborech projektu
Každý soubor .xaml ve složce projektu má odpovídající soubor .xaml.h a .xaml.cpp soubor ve stejné složce a soubor .g a soubor .g.hpp ve složce Generované soubory, který je na disku, ale není součástí projektu. Soubory XAML upravíte tak, aby vytvářely prvky uživatelského rozhraní a připojily je ke zdrojům dat (DataBinding). Soubory .h a .cpp upravíte tak, aby se přidala vlastní logika pro obslužné rutiny událostí. Automaticky generované soubory představují transformaci kódu XAML na C++/CX. Tyto soubory neupravujte, ale můžete je prozkoumat, abyste lépe pochopili, jak kód funguje. V podstatě vygenerovaný soubor obsahuje částečnou definici třídy pro kořenový element XAML; tato třída je stejná třída, kterou upravujete v souborech *.xaml.h a .cpp. Vygenerované soubory deklarují podřízené elementy uživatelského rozhraní XAML jako členy třídy, abyste na ně mohli odkazovat v kódu, který píšete. V době sestavení se vygenerovaný kód a váš kód sloučí do úplné definice třídy a pak se zkompiluje.
Podívejme se nejprve na soubory projektu.
- App.xaml, App.xaml.h, App.xaml.cpp: Představuje objekt aplikace, což je vstupní bod aplikace. App.xaml neobsahuje žádné značky uživatelského rozhraní specifické pro stránky, ale můžete přidat styly uživatelského rozhraní a další prvky, které chcete zpřístupnit z libovolné stránky. Soubory s kódem obsahují obslužné rutiny pro události OnLaunched a OnSuspending. Obvykle sem přidáte vlastní kód, který inicializuje aplikaci při spuštění a provede vyčištění, když je pozastavený nebo ukončený.
- MainPage.xaml, MainPage.xaml.h, MainPage.xaml.cpp: Obsahují XAML markup a kód na pozadí pro výchozí "startovní" stránku v aplikaci. Nemá žádnou podporu navigace ani integrované ovládací prvky.
- pch.h, pch.cpp: Předkompilovaný hlavičkový soubor a soubor, který jej ve vašem projektu obsahuje. V souboru pch.h můžete zahrnout všechny hlavičky, které se často nemění a jsou zahrnuty do jiných souborů v řešení.
- Package.appxmanifest: Soubor XML, který popisuje možnosti zařízení, které vaše aplikace vyžaduje, a informace o verzi aplikace a další metadata. Chcete-li tento soubor otevřít v Návrháři manifestu, stačí na něj poklikáním.
- HelloWorld_TemporaryKey.pfx: Klíč, který umožňuje nasazení aplikace na tomto počítači ze sady Visual Studio.
První pohled na kód
Pokud kód prozkoumáte v souboru App.xaml.h, App.xaml.cpp ve sdíleném projektu, všimnete si, že je to většinou kód C++, který vypadá dobře. Některé prvky syntaxe ale nemusí být tak známé, pokud s aplikacemi windows Runtime začínáte nebo jste pracovali s C++/CLI. Tady jsou nejběžnější nestandardní prvky syntaxe, které uvidíte v C++/CX:
třídy ref
Téměř všechny třídy prostředí Windows Runtime, které zahrnují všechny typy v ovládacích prvcích Windows API-XAML, stránky ve vaší aplikaci, samotnou třídu aplikace, všechny objekty zařízení a síťové objekty, všechny typy kontejnerů jsou deklarovány jako referenční třída. (Několik typů Windows je třída hodnoty
namespace HelloWorld
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public ref class MainPage sealed
{
public:
MainPage();
};
}
Všechny typy prostředí Windows Runtime musí být deklarovány v rámci oboru názvů a na rozdíl od standardu ISO C++ mají samotné typy modifikátor přístupnosti. Modifikátor veřejné zviditelňuje třídu komponentám prostředí Windows Runtime mimo obor názvů. zapečetěné klíčové slovo znamená, že třída nemůže sloužit jako základní třída. Téměř všechny třídy ref jsou zapečetěné; Dědičnost tříd není široce používána, protože JavaScript ji nerozumí.
nové a ^ (klobouky)
Proměnnou třídy ref deklarujete pomocí operátoru ^ (hat) a vytvoříte instanci objektu s novým klíčovým slovem ref. Potom budete přistupovat k metodám instance objektu pomocí operátoru -> stejně jako ukazatel C++. Statické metody jsou přístupné pomocí operátoru :: stejně jako v ISO C++.
V následujícím kódu použijeme plně kvalifikovaný název k vytvoření instance objektu a pomocí operátoru -> zavolá metodu instance.
Windows::UI::Xaml::Media::Imaging::BitmapImage^ bitmapImage =
ref new Windows::UI::Xaml::Media::Imaging::BitmapImage();
bitmapImage->SetSource(fileStream);
Obvykle bychom v souboru .cpp přidali direktivu using namespace Windows::UI::Xaml::Media::Imaging
a automatické klíčové slovo, aby stejný kód vypadal takto:
auto bitmapImage = ref new BitmapImage();
bitmapImage->SetSource(fileStream);
Vlastnosti
Třída ref může mít vlastnosti, které jsou stejně jako ve spravovaných jazycích speciální členské funkce, které se zobrazují jako pole pro využívání kódu.
public ref class SaveStateEventArgs sealed
{
public:
// Declare the property
property Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ PageState
{
Windows::Foundation::Collections::IMap<Platform::String^, Platform::Object^>^ get();
}
...
};
...
// consume the property like a public field
void PhotoPage::SaveState(Object^ sender, Common::SaveStateEventArgs^ e)
{
if (mruToken != nullptr && !mruToken->IsEmpty())
{
e->PageState->Insert("mruToken", mruToken);
}
}
delegáti
Stejně jako ve spravovaných jazycích je delegát referenčním typem, který zapouzdřuje funkci s konkrétní signaturou. Nejčastěji se používají s událostmi a zpracovateli událostí.
// Delegate declaration (within namespace scope)
public delegate void LoadStateEventHandler(Platform::Object^ sender, LoadStateEventArgs^ e);
// Event declaration (class scope)
public ref class NavigationHelper sealed
{
public:
event LoadStateEventHandler^ LoadState;
};
// Create the event handler in consuming class
MainPage::MainPage()
{
auto navigationHelper = ref new Common::NavigationHelper(this);
navigationHelper->LoadState += ref new Common::LoadStateEventHandler(this, &MainPage::LoadState);
}
Přidání obsahu do aplikace
Pojďme do aplikace přidat nějaký obsah.
Krok 1: Úprava úvodní stránky
V Průzkumníka řešeníotevřete MainPage.xaml.
Vytvořte ovládací prvky pro uživatelské rozhraní tak, že do kořenové mřížky přidáte následující KÓD XAML bezprostředně před jeho pravou značku. Obsahuje StackPanel
, který má TextBlock , který se ptá na jméno uživatele, prvek TextBox , který přijímá jméno uživatele, tlačítko , a další prvek TextBlock. <StackPanel x:Name="contentPanel" Margin="120,30,0,0"> <TextBlock HorizontalAlignment="Left" Text="Hello World" FontSize="36"/> <TextBlock Text="What's your name?"/> <StackPanel x:Name="inputPanel" Orientation="Horizontal" Margin="0,20,0,20"> <TextBox x:Name="nameInput" Width="300" HorizontalAlignment="Left"/> <Button x:Name="inputButton" Content="Say "Hello""/> </StackPanel> <TextBlock x:Name="greetingOutput"/> </StackPanel>
V tuto chvíli jste vytvořili velmi základní univerzální aplikaci pro Windows. Pokud chcete zjistit, jak aplikace pro UPW vypadá, stisknutím klávesy F5 sestavte, nasaďte a spusťte aplikaci v režimu ladění.
Jako první se zobrazí výchozí úvodní obrazovka. Má obrázek – Prostředky\SplashScreen.scale-100.png– a barvu pozadí, která je zadaná v souboru manifestu aplikace. Informace o přizpůsobení úvodní obrazovky najdete v tématu Přidání úvodní obrazovky.
Když úvodní obrazovka zmizí, zobrazí se vaše aplikace. Zobrazí hlavní stránku aplikace.
obrazovka aplikace pro UWP
Zatím to nedělá moc – ale blahopřejeme, vytvořili jste svou první aplikaci pro univerzální platformu Windows!
Pokud chcete zastavit ladění a zavřít aplikaci, vraťte se do sady Visual Studio a stiskněte Shift+F5.
Další informace najdete v tématu Spuštění aplikace ze Storu ze sady Visual Studio.
V aplikaci můžete zadat TextBox, ale kliknutím na Tlačítko nic nedělá. V pozdějších krocích vytvoříte obslužnou rutinu pro událost kliknutí tlačítka , která zobrazí personalizovaný pozdrav.
Krok 2: Vytvořte obslužnou rutinu události
V souboru MainPage.xaml vyberte v xaml nebo návrhovém zobrazení tlačítko "Say Hello" tlačítko v StackPanel, který jste přidali dříve.
Otevřete okno Vlastnosti stisknutím klávesy F4 a poté zvolte tlačítko Události (tlačítko
).
Najděte událost Click. Do textového pole zadejte název funkce, která zpracovává událost Kliknutí . V tomto příkladu zadejte "Button_Click".
Stiskněte klávesu Enter. Metoda obslužné rutiny události je vytvořena v MainPage.xaml.cpp a otevřena, abyste mohli přidat kód, který se spustí, když dojde k události.
Současně se v souboru MainPage.xaml aktualizuje XAML pro tlačítko a deklaruje obslužnou rutinu události Click takto:
<Button Content="Say "Hello"" Click="Button_Click"/>
Můžete ho také jednoduše přidat do kódu xaml ručně, což může být užitečné, pokud návrhář nenačte. Pokud tuto položku zadáte ručně, zadejte "Click" a poté nechte IntelliSense zobrazit možnost přidat novou obslužnou rutinu události. Tímto způsobem Visual Studio vytvoří potřebnou deklaraci metody a zástupný kód.
Návrhář se nenačte, pokud během vykreslování dojde k neošetřené výjimce. Vykreslování v návrháři zahrnuje spuštění návrhové verze stránky. Může být užitečné zakázat spouštění uživatelského kódu. Můžete to provést změnou nastavení v dialogovém okně Nástroje, Možnosti . V části Návrhář XAMLzrušte zaškrtnutí Spustit kód projektu v návrháři XAML (pokud je podporováno).
- V MainPage.xaml.cpp přidejte následující kód do obslužné rutiny události Button_Click , kterou jste právě vytvořili. Tento kód načte jméno uživatele z
nameInput
ovládacího prvku TextBox a použije ho k vytvoření pozdravu.greetingOutput
TextBlock zobrazuje výsledek.
void HelloWorld::MainPage::Button_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
{
greetingOutput->Text = "Hello, " + nameInput->Text + "!";
}
- Nastavte projekt jako spouštěcí a poté stisknutím klávesy F5 sestavte a spusťte aplikaci. Když do textového pole zadáte jméno a kliknete na tlačítko, aplikace zobrazí přizpůsobený pozdrav.
obrazovka aplikace
Krok 3: Styl úvodní stránky
Výběr motivu
Vzhled a chování aplikace je snadné přizpůsobit. Ve výchozím nastavení vaše aplikace používá prostředky, které mají světlý styl. Systémové prostředky také obsahují světlý motiv. Pojďme si to vyzkoušet a podívat se, jak to vypadá.
Přepnutí na tmavý motiv
Otevřete App.xaml.
V úvodní application značku upravte vlastnost RequestedTheme a nastavte její hodnotu na Dark:
RequestedTheme="Dark"
Tady je úplný štítek aplikace s tmavým motivem:
<Application x:Class="HelloWorld.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:HelloWorld" RequestedTheme="Dark">
Stisknutím klávesy F5 ji sestavte a spusťte. Všimněte si, že používá tmavý motiv.
Který motiv byste měli použít? Kterýkoli chcete. Tady je náš postup: pro aplikace, které většinou zobrazují obrázky nebo video, doporučujeme tmavý motiv; pro aplikace, které obsahují hodně textu, doporučujeme světlý motiv. Pokud používáte vlastní barevné schéma, použijte motiv, který nejlépe vyhovuje vzhledu a chování vaší aplikace. Ve zbytku tohoto kurzu použijeme motiv Light na snímcích obrazovky.
Poznámka Motiv se použije při spuštění aplikace a během běhu aplikace se nedá změnit.
Použití systémových stylů
V aplikaci pro Windows je text velmi malý a obtížně čitelný. Pojďme to opravit aplikací systémového stylu.
Změna stylu elementu
V projektu Windows otevřete MainPage.xaml.
V zobrazení XAML nebo návrhu, vyberte TextBlock s textem "Jak se jmenujete?", který jste přidali dříve.
V okně Vlastnosti (F4), zvolte tlačítko Vlastnosti (
) v pravém horním rohu.
Rozbalte skupinu Text a nastavte velikost písma na 18 pixelů.
Rozbalte skupinu Ostatní a najděte vlastnost Styl.
Klikněte na značku vlastnosti (zelené pole napravo od vlastnosti Style) a potom v nabídce zvolte Systémový prostředek>BaseTextBlockStyle.
BaseTextBlockStyle je prostředek definovaný v ResourceDictionary v kořenové <m>\Program Files\Windows Kits\10\Include\winrt\xaml\design\generic.xaml.
Na návrhové ploše XAML se změní vzhled textu. V editoru XAML se aktualizuje XAML pro Objekt TextBlock :
<TextBlock Text="What's your name?" Style="{ThemeResource BaseTextBlockStyle}"/>
Opakováním procesu nastavte velikost písma a přiřaďte BaseTextBlockStyle elementu
greetingOutput
TextBlock .Tip I když v tomto TextBlocku není žádný text, když přesunete ukazatel na návrhovou plochu XAML, zobrazí se modrý obrys, který ukazuje, kde je, abyste ho mohli vybrat.
Váš XAML teď vypadá takto:
<StackPanel x:Name="contentPanel" Margin="120,30,0,0">
<TextBlock Style="{ThemeResource BaseTextBlockStyle}" FontSize="18" Text="What's your name?"/>
<StackPanel x:Name="inputPanel" Orientation="Horizontal" Margin="0,20,0,20">
<TextBox x:Name="nameInput" Width="300" HorizontalAlignment="Left"/>
<Button x:Name="inputButton" Content="Say "Hello"" Click="Button_Click"/>
</StackPanel>
<TextBlock Style="{ThemeResource BaseTextBlockStyle}" FontSize="18" x:Name="greetingOutput"/>
</StackPanel>
- Stisknutím klávesy F5 sestavte a spusťte aplikaci. Teď vypadá takto:
Obrazovka aplikace
Krok 4: Přizpůsobení uživatelského rozhraní různým velikostem oken
Teď se uživatelské rozhraní přizpůsobí různým velikostem obrazovky, aby vypadalo dobře na mobilních zařízeních. Uděláte to tak, že přidáte VisualStateManager a nastavíte vlastnosti, které se použijí pro různé stavy vizuálu.
Úprava rozložení uživatelského rozhraní
- V editoru XAML přidejte tento blok XAML za otevírací značku kořenového prvku Grid.
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState x:Name="wideState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="641" />
</VisualState.StateTriggers>
</VisualState>
<VisualState x:Name="narrowState">
<VisualState.StateTriggers>
<AdaptiveTrigger MinWindowWidth="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="contentPanel.Margin" Value="20,30,0,0"/>
<Setter Target="inputPanel.Orientation" Value="Vertical"/>
<Setter Target="inputButton.Margin" Value="0,4,0,0"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
- Ladění aplikace na místním počítači Všimněte si, že uživatelské rozhraní vypadá stejně jako předtím, pokud okno nebude užší než 641 pixelů nezávislých na zařízeních (DIPS).
- Ladění aplikace v emulátoru mobilního zařízení Všimněte si, že uživatelské rozhraní používá vlastnosti, které jste definovali,
narrowState
a zobrazí se správně na malé obrazovce.
Pokud jste použili VisualStateManager v předchozích verzích XAML, můžete si všimnout, že XAML zde používá zjednodušenou syntaxi.
VisualState pojmenovaný wideState
má AdaptiveTrigger s vlastností MinWindowWidth nastavenou na hodnotu 641. To znamená, že stav se použije pouze v případě, že šířka okna není menší než minimálně 641 DIPs. Pro tento stav nedefinujete žádné objekty Setter , takže používá vlastnosti rozložení, které jste definovali v XAML pro obsah stránky.
Druhý VisualState, narrowState
, má AdaptiveTrigger s vlastností MinWindowWidth nastavenou na hodnotu 0. Tento stav se použije v případě, že je šířka okna větší než 0, ale menší než 641 DPI. (Při 641 DIPs se wideState
použije.) V tomto stavu definujete některé objekty Setter , které změní vlastnosti rozložení ovládacích prvků v uživatelském rozhraní:
- Levý okraj
contentPanel
prvku zmenšete z 120 na 20. -
Orientaci
inputPanel
prvku změníte z vodorovného na svislý. - Do elementu
inputButton
přidáte horní okraj 4 DIP.
Shrnutí
Blahopřejeme, dokončili jste první kurz! Naučilo se, jak přidat obsah do univerzálních aplikací pro Windows, jak do nich přidat interaktivitu a jak změnit jejich vzhled.
Další kroky
Pokud máte projekt univerzální aplikace pro Windows, který cílí na Windows 8.1 nebo Windows Phone 8.1, můžete ho přenést do Windows 10 nebo Windows 11. Pro tento proces neexistuje žádný automatický proces, ale můžete to udělat ručně. Začněte novým univerzálním projektem Windows, abyste získali nejnovější systémovou strukturu projektu a soubory manifestu, zkopírujte soubory kódu do adresářové struktury projektu, přidejte do projektu položky a přepište XAML pomocí visualStateManageru podle pokynů v tomto tématu. Další informace najdete v tématu přenos projektu prostředí Windows Runtime 8 do projektu univerzální platformy Windows (UPW) a portování doUniverzální platformy Windows (C++).
Pokud máte existující kód C++, který chcete integrovat s aplikací UPW, například vytvořit nové uživatelské rozhraní UPW pro existující aplikaci, přečtěte si téma Postupy: Použití existujícího kódu C++ v projektu Univerzálního systému Windows.