Typy desktopových aplikací windows C++

Desktopová aplikace v jazyce C++ je nativní aplikace, která má přístup k celé sadě rozhraní API systému Windows a buď běží v okně, nebo v systémové konzole. Desktopové aplikace v jazyce C++ mohou běžet v systému Windows XP až Windows 11 (i když systém Windows XP již není oficiálně podporován a od té doby existuje mnoho nových rozhraní API systému Windows).

Každá desktopová aplikace v jazyce C++ může používat třídy a funkce a třídy a funkce standardní knihovny C Runtime (CRT), objekty MODELU COM a veřejné funkce Systému Windows, které se souhrnně označují jako rozhraní API systému Windows. Úvod do desktopových aplikací windows v jazyce C++ najdete v tématu Začínáme s Win32 a C++.

Existuje několik širokých kategorií aplikací pro Windows, které můžete vytvořit pomocí jazyka C++, jak je popsáno níže. Každý má vlastní programovací model a sadu knihoven specifických pro Windows. Standardní knihovna jazyka C++ a knihovny jazyka C++ třetích stran je možné použít v libovolné z nich.

Dokumentaci k samotné platformě Windows najdete v dokumentaci k Systému Windows.

Nativní desktopové klientské aplikace

Nativní desktopová klientská aplikace neboli aplikace Win32 je desktopová aplikace systému Windows napsaná v jazyce C nebo C++, která používá nativní rozhraní API C systému Windows nebo rozhraní COM (Component Object Model) API CRT a standardní knihovny a knihovny třetích stran. Aplikace Win32, která běží v okně, vyžaduje, aby vývojář zpracovával zprávy systému Windows uvnitř funkce procedury systému Windows. I přes název lze aplikaci Win32 zkompilovat jako 32bitovou (x86) nebo 64bitovou (x64) binární. V integrovaném vývojovém prostředí sady Visual Studio jsou termíny x86 a Win32 synonymem.

Aplikace příkazového řádku (konzoly)

Konzolové aplikace C++ běží z příkazového řádku v okně konzoly a můžou zobrazovat pouze textový výstup.

Aplikace pro UPW

Univerzální platforma Windows (UPW) je moderní rozhraní WINDOWS API. Aplikace pro UPW běží na Windows 11, Windows 10, XBoxu, Windows Telefon, Surface Hubu a dalších zařízeních. Aplikace pro UPW používají XAML pro uživatelské rozhraní a jsou plně dotykové. Desktopová aplikace se liší od aplikace pro Univerzální platforma Windows (UPW).

Původní podpora C++ pro UPW se skládá z C++/CX, dialektu C++ s rozšířeními syntaxe nebo knihovny prostředí Windows Runtime (WRL), která je založená na standardním jazyce C++ a modelu COM. C++/CX i WRL jsou stále podporovány, ale nedoporučuje se pro nový vývoj.

Pro nové projekty doporučujeme C++/WinRT, který je zcela založený na standardním jazyce C++ a poskytuje rychlejší výkon.

Aplikace nebo komponenta C++/CLI používá rozšíření syntaxe jazyka C++ (jak je povoleno standardem C++) k povolení interakce mezi .NET a nativním kódem jazyka C++. Aplikace C++/CLI může mít části, které běží nativně, a části, které běží v rozhraní .NET Framework s přístupem k knihovně základních tříd .NET. Jazyk C++/CLI je upřednostňovanou možností, pokud máte nativní kód C++, který potřebuje pracovat s kódem napsaným v jazyce C# nebo Visual Basic. Je určen pro použití v knihovnách DLL .NET, nikoli v kódu uživatelského rozhraní.

Přemostění na desktop

Ve Windows 10 a novějších můžete stávající desktopovou aplikaci nebo objekt MODELU COM zabalit jako aplikaci pro UPW. Může používat funkce UPW, jako je dotykové ovládání nebo volání rozhraní API z moderní sady rozhraní WINDOWS API. Aplikaci pro UPW můžete také přidat do desktopového řešení v sadě Visual Studio, zabalit je do jednoho balíčku a pomocí rozhraní API pro Windows mezi nimi komunikovat.

Visual Studio 2017 verze 15.4 a novější vám umožní vytvořit projekt balíčku aplikací pro Windows, který výrazně zjednoduší práci s balením stávající desktopové aplikace. Několik omezení platí pro volání registru nebo rozhraní API, které může vaše desktopová aplikace používat. V mnoha případech ale můžete vytvořit alternativní cesty ke kódu, abyste dosáhli podobných funkcí při spuštění v balíčku aplikace.

C++ nebo .NET?

Programování v jazyce C# je obecně méně složité, méně náchylné k chybám a má modernější objektově orientované rozhraní API než Win32 nebo MFC. Ve většině případů je jeho výkon více než adekvátní.

.NET nabízí technologii Windows Presentation Foundation (WPF) pro bohatou grafiku a můžete využívat win32 i moderní rozhraní API pro prostředí Windows Runtime. Obecně platí, že pokud potřebujete, doporučujeme pro desktopové aplikace používat C++:

  • přesná kontrola využití paměti
  • nejvyšší ekonomické využití energie
  • využití GPU pro obecné výpočty
  • přístup k DirectX
  • vysoké využití standardních knihoven C++

Je také možné kombinovat výkon a efektivitu jazyka C++ s programováním v .NET. V jazyce C# můžete vytvořit uživatelské rozhraní a pomocí jazyka C++/CLI povolit aplikaci využívat nativní knihovny jazyka C++.

Hry

Hry DirectX můžou běžet na počítači nebo Xboxu.

Klienti databáze SQL Serveru

Pokud chcete získat přístup k databázím SQL Serveru z nativního kódu, použijte ODBC nebo OLE DB.

Ovladače zařízení s Windows

Ovladače jsou komponenty nízké úrovně, které zpřístupní data z hardwarových zařízení pro aplikace a další součásti operačního systému.

Služby systému Windows

Služba Systému Windows je program, který může běžet na pozadí s malou nebo žádnou interakcí uživatele. Tyto programy se nazývají démony v systémech systém UNIX.

  • Další informace naleznete v tématu Služby.

Model COM

Model COM (Component Object Model) je specifikace, která umožňuje programům napsaným v různých jazycích vzájemně spolupracovat.

Mnoho komponent Systému Windows se implementuje jako objekty MODELU COM a dodržuje standardní pravidla modelu COM pro vytváření objektů, zjišťování rozhraní a zničení objektů. Použití objektů MODELU COM z desktopových aplikací C++ je poměrně jednoduché, ale psaní vlastního objektu COM je pokročilejší.

Knihovna ATL (Active Template Library) poskytuje makra a pomocné funkce, které zjednodušují vývoj modelu COM. Další informace naleznete v tématu KOMPONENTY ATL COM desktop.

MFC

Aplikace MFC je desktopová aplikace systému Windows, která k vytvoření uživatelského rozhraní používá třídy Microsoft Foundation. Aplikace MFC může také používat komponenty modelu COM a rozhraní CRT a rozhraní API standardní knihovny.

MFC poskytuje tenký objektově orientovaný obálku jazyka C++ přes smyčku zpráv okna a rozhraní API systému Windows. MFC je výchozí volbou pro aplikace ( zejména aplikace podnikového typu), které mají mnoho ovládacích prvků uživatelského rozhraní nebo vlastních uživatelských ovládacích prvků.

MFC poskytuje praktické pomocné třídy pro správu oken, serializaci, manipulaci s textem, tisk a moderní prvky uživatelského rozhraní, jako je pás karet. Abyste mohli pracovat s prostředím MFC, měli byste být obeznámeni s Win32.

Sady SDK, knihovny a soubory hlaviček

Visual Studio obsahuje knihovnu C Runtime Library (CRT), standardní knihovnu C++ a další knihovny specifické pro Microsoft. Většina složek, které obsahují soubory hlaviček pro tyto knihovny, se nachází v instalačním adresáři sady Visual Studio ve složce \VC\ (například C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Soubory hlaviček Windows a CRT najdete v instalační složce sady Windows SDK (například C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

Správce balíčků vcpkg umožňuje pohodlně nainstalovat stovky opensourcových knihoven třetích stran pro Windows. Další informace najdete v tématu vcpkg.

Knihovny Microsoftu zahrnují:

  • Třídy knihovny MFC (Microsoft Foundation Classes): Objektově orientovaný rámec pro vytváření tradičních programů operačního systému Windows (zejména podnikových aplikací), které mají bohatá uživatelská rozhraní obsahující tlačítka, seznamy, stromová zobrazení a další ovládací prvky. Další informace naleznete v tématu MFC DesktopOvé aplikace.

  • Knihovna ATL (Active Template Library): Výkonné pomocné knihovny pro vytváření komponent modelu COM. Další informace naleznete v tématu KOMPONENTY ATL COM Desktop Components.

  • Knihovna C++ AMP (C++ Accelerated Massive Parallelism): Knihovna, která umožňuje vysoce výkonné obecné výpočetní práce na GPU. Další informace naleznete v tématu C++ AMP (C++ Accelerated Massive Parallelism).

  • Modul Concurrency Runtime: Knihovna, která zjednodušuje práci paralelního a asynchronního programování pro vícejádrová a mnohojádrová zařízení. Další informace najdete v tématu Concurrency Runtime.

Mnoho programovacích scénářů pro Windows navíc také vyžaduje sadu Windows SDK obsahující soubory hlaviček, které umožňují přístup ke komponentám operačního systému Windows. Visual Studio ve výchozím nastavení nainstaluje sadu Windows SDK jako součást desktopové úlohy C++, která umožňuje vývoj univerzálních aplikací pro Windows. K vývoji aplikací pro UPW potřebujete windows 10 nebo novější verzi sady Windows SDK.

  • Další informace a odkaz ke stažení najdete v tématu Windows SDK.
  • Další informace o sadách WINDOWS SDK pro starší verze Systému Windows naleznete v archivu sady Windows SDK.

Výchozí umístění pro všechny verze sady Windows SDK, kterou instalujete, je: Program Files (x86)\Windows Kits.

Nástroje pro vývoj

Systém Visual Studio obsahuje výkonný ladicí program pro nativní kód, nástroje pro statickou analýzu, nástroje pro ladění grafiky, úplný editor kódu, podporu pro testování částí a mnoho dalších nástrojů a pomůcek.

V této části

Odkaz Popis
Návod: Vytváření desktopových aplikací pro Windows (C++) Vytvořte nativní desktopovou aplikaci pro Windows.
Postupy: Použití sady Windows SDK v desktopové aplikaci pro Windows Obsahuje kroky pro nastavení projektu pro sestavení pomocí sady Windows SDK.
Návod: Vytvoření standardního programu C++ Vytvořte konzolovou aplikaci systému Windows.
Návod: Vytvoření kalkulačky konzoly v jazyce C++ Vytvořte jednoduchou konzolovou aplikaci systému Windows. Konzolová aplikace Win32 (nebo Win64) nemá vlastní okno a smyčku zpráv. Spustí se v okně konzoly a vstup a výstup se provádí prostřednictvím příkazového řádku.
Nasazení nativních desktopových aplikací Nasaďte nativní aplikace ve Windows.
Návod: Vytvoření a použití statické knihovny Jak vytvořit .lib binární soubor.
Desktopový průvodce pro Windows Pomocí průvodce můžete vytvářet nové projekty Windows.
Knihovna ATL (Active Template Library) Pomocí knihovny ATL vytvořte komponenty MODELU COM v jazyce C++.
Sdílené třídy ATL a MFC Použijte třídy, jako CString jsou sdílené v ATL a MFC.
Knihovna MFC (Microsoft Foundation Classes) Použití mfc k vytvoření velkých nebo malých aplikací pro Windows pomocí dialogových oken a ovládacích prvků
Přístup k datům OLE DB a ODBC
Text a řetězce Různé typy řetězců ve Windows.
Práce se soubory prostředků Jak do desktopové aplikace přidat obrázky, ikony, tabulky řetězců a další prostředky.
Zdroje informací pro vytvoření hry pomocí DirectX (C++) Odkazy na obsah pro vytváření her v jazyce C++.
Titulek Popis
Vývoj pro Windows Obsahuje informace o rozhraní API a modelu COM systému Windows. (Některá rozhraní API systému Windows a knihovny DLL třetích stran jsou implementovány jako objekty modelu COM.)
Hilo: Vývoj aplikací C++ pro Windows 7 Popisuje, jak vytvořit plnohodnotnou klientskou desktopovou aplikaci pro Windows, která používá Windows Animation a Direct2D k vytvoření karuselového uživatelského rozhraní. Tento kurz se od Windows 7 neaktualizoval, ale stále poskytuje důkladný úvod do programování win32.
Vývoj pro .NET v C++/CLI Vytvořte obálky pro nativní knihovny C++, které umožňují komunikaci s aplikacemi a komponentami .NET.
Přípony komponent pro .NET a UPW Referenční informace pro elementy syntaxe sdílené pomocí C++/CX a C++/CLI
Univerzální aplikace pro Windows (C++) Psaní aplikací pro UPW pomocí C++/CX nebo knihovny šablon prostředí Windows Runtime (WRL).
Atributy C++ pro COM a .NET Nestandardní atributy pro programování pouze pro Windows pomocí .NET nebo COM.

Viz také

C++ v sadě Visual Studio