Udostępnij za pośrednictwem


Typy aplikacji desktopowych C++ systemu Windows

Aplikacja desktopowa w C++ jest natywną aplikacją, która może uzyskiwać dostęp do pełnego zestawu API Windows i działa w oknie lub w konsoli systemowej. Aplikacje klasyczne w języku C++ mogą działać w systemie Windows XP za pośrednictwem systemu Windows 11 (chociaż system Windows XP nie jest już oficjalnie obsługiwany i od tego czasu istnieje wiele nowych interfejsów API systemu Windows).

Każda aplikacja desktopowa w języku C++ może używać C Runtime (CRT) oraz klas i funkcji biblioteki standardowej, obiektów COM oraz publicznych funkcji systemu Windows, które są wspólnie nazywane Windows API. Aby zapoznać się z wprowadzeniem do aplikacji desktopowych systemu Windows w języku C++, zobacz Get Started with Win32 and C++.

Istnieje kilka szerokich kategorii aplikacji systemu Windows, które można utworzyć za pomocą języka C++, opisane poniżej. Każdy z nich ma własny model programowania i zestaw bibliotek specyficznych dla systemu Windows. Standardowa biblioteka języka C++ i biblioteki języka C++ innych firm mogą być używane w dowolnej z nich.

Aby uzyskać dokumentację dotyczącą samej platformy Windows, zobacz dokumentację systemu Windows.

Natywne aplikacje klienckie dla komputerów stacjonarnych

Natywna aplikacja kliencka pulpitu lub aplikacja Win32 to aplikacja klasyczna systemu Windows napisana w języku C lub C++, która korzysta z natywnych interfejsów API języka Windows C lub interfejsów API modelu obiektów składników (COM) CRT i standardowych bibliotek oraz bibliotek innych firm. Aplikacja Win32 działająca w oknie wymaga od dewelopera obsługi komunikatów systemu Windows wewnątrz funkcji procedury systemu Windows. Pomimo nazwy można skompilować aplikację Win32 jako 32-bitową (x86) lub 64-bitową (x64) binarną. W środowisku IDE programu Visual Studio terminy x86 i Win32 są synonimami.

Aplikacje wiersza polecenia (konsola)

Aplikacje konsolowe języka C++ są uruchamiane z wiersza polecenia w oknie konsoli i mogą wyświetlać tylko dane wyjściowe tekstu.

Aplikacje UWP

Platforma uniwersalna systemu Windows (UWP) to nowoczesny interfejs API systemu Windows. Aplikacje platformy UWP działają na urządzeniach z systemami Windows 11, Windows 10, XBox, Windows Phone, Surface Hub i innymi urządzeniami. Aplikacje UWP używają XAML do tworzenia interfejsu użytkownika i w pełni obsługują dotyk. Aplikacja desktopowa różni się od aplikacji platformy uniwersalnej systemu Windows (UWP).

Oryginalna obsługa języka C++ dla platformy UWP składała się z języka C++/CX, dialektu języka C++ z rozszerzeniami składni lub biblioteki środowisko wykonawcze systemu Windows (WRL), która jest oparta na standardowym języku C++ i COM. Zarówno C++/CX, jak i WRL są nadal obsługiwane, ale nie są zalecane w przypadku nowego programowania.

W przypadku nowych projektów zalecamy język C++/WinRT, który jest całkowicie oparty na standardowym języku C++ i zapewnia szybszą wydajność.

Aplikacja lub składnik C++/CLI używa rozszerzeń do składni języka C++ (dozwolonej przez standard C++), aby umożliwić interakcję między platformą .NET i natywnym kodem C++. Aplikacja C++/CLI może zawierać części uruchamiane natywnie i części uruchamiane na platformie .NET Framework z dostępem do biblioteki klas podstawowych platformy .NET. Język C++/CLI jest preferowaną opcją, jeśli masz natywny kod C++, który musi pracować z kodem napisanym w języku C# lub Visual Basic. Jest przeznaczony do użycia w bibliotekach DLL platformy .NET, a nie w kodzie interfejsu użytkownika.

Mostek dla aplikacji klasycznych

W systemie Windows 10 lub nowszym możesz spakować istniejącą aplikację klasyczną lub obiekt COM jako aplikację platformy UWP. Może korzystać z funkcji UWP, takich jak dotyk, lub wywoływać API z nowoczesnego zestawu API systemu Windows. Aplikację platformy UWP można również dodać do rozwiązania klasycznego w programie Visual Studio, spakować je razem w jednym pakiecie i używać interfejsów API systemu Windows do komunikacji między nimi.

Visual Studio 2017 w wersji 15.4 lub nowszej umożliwia utworzenie projektu pakietu aplikacji systemu Windows, aby znacznie uprościć pracę pakowania istniejących aplikacji desktopowych. Kilka ograniczeń dotyczy wywołań rejestru lub interfejsów API, których może używać aplikacja desktopowa. Jednak w wielu przypadkach można utworzyć alternatywne ścieżki kodu, aby osiągnąć podobne funkcje podczas uruchamiania w pakiecie aplikacji.

C++ lub .NET?

Ogólnie rzecz biorąc, programowanie platformy .NET w języku C# jest mniej złożone, mniej podatne na błędy i ma bardziej nowoczesny interfejs API zorientowany na obiekt niż Win32 lub MFC. W większości przypadków jego wydajność jest większa niż odpowiednia.

Platforma .NET oferuje Windows Presentation Foundation (WPF) w celu uzyskania rozbudowanej grafiki i można korzystać zarówno z Win32, jak i z nowoczesnego interfejsu API Windows Runtime. Ogólnie rzecz biorąc, zalecamy używanie języka C++ dla aplikacji klasycznych, jeśli są wymagane:

  • precyzyjna kontrola nad użyciem pamięci
  • największa oszczędność energii
  • użycie procesora GPU na potrzeby przetwarzania ogólnego
  • dostęp do programu DirectX
  • duże użycie standardowych bibliotek języka C++

Istnieje również możliwość połączenia mocy i wydajności języka C++ z programowaniem platformy .NET. Interfejs użytkownika można utworzyć w języku C# i użyć języka C++/interfejsu wiersza polecenia, aby umożliwić aplikacji korzystanie z natywnych bibliotek języka C++.

Gry

Gry DirectX można uruchamiać na komputerze pc lub Xbox.

Klienci bazy danych programu SQL Server

Aby uzyskać dostęp do baz danych programu SQL Server z kodu natywnego, użyj odBC lub OLE DB.

Sterowniki urządzeń dla systemu Windows

Sterowniki to składniki niskiego poziomu, które sprawiają, że dane z urządzeń sprzętowych są dostępne dla aplikacji i innych składników systemu operacyjnego.

Usługi systemu Windows

Usługa systemu Windows to program, który może działać w tle z małą lub żadną interakcją użytkownika. Te programy są nazywane demonami w systemach UNIX.

  • Aby uzyskać więcej informacji, zobacz Usługi.

COM

Model obiektów składników (COM) to specyfikacja umożliwiająca programom napisanym w różnych językach współdziałanie ze sobą.

Wiele składników systemu Windows jest implementowanych jako obiekty COM i przestrzegają standardowych reguł COM dotyczących tworzenia obiektów, odkrywania interfejsów i niszczenia obiektów. Korzystanie z obiektów COM z aplikacji klasycznych języka C++ jest stosunkowo proste, ale pisanie własnego obiektu COM jest bardziej zaawansowane.

Biblioteka Active Template Library (ATL) udostępnia makra i funkcje pomocnicze, które upraszczają programowanie modelu COM. Aby uzyskać więcej informacji, zobacz SKŁADNIKI pulpitu ATL COM.

MFC

Aplikacja MFC to aplikacja klasyczna systemu Windows, która używa klas programu Microsoft Foundation do utworzenia interfejsu użytkownika. Aplikacja MFC może również używać składników COM oraz interfejsów API biblioteki standardowej i CRT.

MFC udostępnia cienką obiektową otoczkę języka C++ nad pętlą komunikatów okna i interfejsami API systemu Windows. MFC jest domyślnym wyborem dla aplikacji — zwłaszcza aplikacji typu przedsiębiorstwa — które mają wiele kontrolek interfejsu użytkownika lub niestandardowe kontrolki użytkownika.

MFC zapewnia wygodne klasy pomocnicze do zarządzania oknami, serializacji, manipulowania tekstem, drukowania i nowoczesnych elementów interfejsu użytkownika, takich jak wstążka. Aby skutecznie korzystać z MFC, należy zapoznać się z Win32.

Zestawy SDK, biblioteki i pliki nagłówkowe

Program Visual Studio zawiera bibliotekę środowiska uruchomieniowego języka C (CRT), bibliotekę standardową języka C++ i inne biblioteki specyficzne dla firmy Microsoft. Większość folderów zawierających pliki nagłówkowe dla tych bibliotek znajduje się w katalogu instalacyjnym programu Visual Studio w folderze \VC\ (na przykład C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Pliki nagłówkowe systemu Windows i CRT znajdują się w folderze instalacyjnym zestawu Windows SDK (na przykład C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

Menedżer pakietów vcpkg umożliwia wygodne instalowanie setek bibliotek open source innych firm dla systemu Windows. Aby uzyskać więcej informacji, zobacz vcpkg.

Biblioteki firmy Microsoft obejmują:

  • Microsoft Foundation Classes (MFC): Zorientowana obiektowo platforma do tworzenia tradycyjnych programów systemu Windows — szczególnie aplikacji dla przedsiębiorstw — które cechuje bogaty interfejs użytkownika zawierający przyciski, pola listy, widoki drzewa i inne formanty. Aby uzyskać więcej informacji, zobacz MFC Desktop Applications (Aplikacje klasyczne MFC).

  • Active Template Library (ATL): Zaawansowana biblioteka pomocnicza do tworzenia składników modelu COM. Aby uzyskać więcej informacji, zobacz SKŁADNIKI pulpitu ATL COM.

  • C++ Accelerated Massive Parallelism (C++ AMP): Biblioteka, która umożliwia wykonywanie wysokiej wydajności obliczeń ogólnego przeznaczenia na procesorach GPU. Aby uzyskać więcej informacji, zobacz C++ AMP (C++ Accelerated Massive Parallelism).

  • Środowisko uruchomieniowe Concurrency Runtime: Biblioteka, która upraszcza pracę przy programowaniu współbieżnym i asynchronicznym dla urządzeń wielo- i wielu-rdzeniowych. Aby uzyskać więcej informacji, zobacz Concurrency Runtime.

Wiele scenariuszy programowania dla systemu Windows wymaga również Windows SDK, które zawiera pliki nagłówkowe umożliwiające dostęp do składników systemu operacyjnego Windows. Domyślnie program Visual Studio instaluje zestaw Windows SDK jako składnik obciążenia C++ Desktop, co umożliwia tworzenie aplikacji uniwersalnych systemu Windows. Aby opracowywać aplikacje UWP, potrzebujesz Windows 10 lub wersji zestawu Windows SDK nowszej niż Windows 10.

  • Aby uzyskać więcej informacji i link pobierania, zobacz Zestaw SDK systemu Windows.
  • Aby uzyskać więcej informacji na temat zestawów SDK systemu Windows dla wcześniejszych wersji systemu Windows, zobacz Archiwum zestawu Windows SDK.

Domyślną lokalizacją dla wszystkich zainstalowanych wersji zestawu Windows SDK jest: Program Files (x86)\Windows Kits.

Narzędzia programistyczne

Środowisko Visual Studio zawiera zaawansowany debuger kodu natywnego, narzędzia do analizy statycznej, graficzne narzędzia do debugowania, profesjonalny edytor kodu, wsparcie dla testów jednostkowych i wiele innych narzędzi.

W tej sekcji

Odnośnik opis
Przewodnik: tworzenie aplikacji pulpitowych systemu Windows (C++) Utwórz natywną aplikację desktopową dla systemu Windows.
Instrukcje: korzystanie z zestawu Windows SDK w aplikacji klasycznej systemu Windows Zawiera kroki konfigurowania projektu do kompilowania przy użyciu zestawu Windows SDK.
Przewodnik: tworzenie standardowego programu C++ Utwórz aplikację konsolową systemu Windows.
Przewodnik: tworzenie kalkulatora konsoli w języku C++ Utwórz prostą aplikację konsolową systemu Windows. Aplikacja konsolowa Win32 (lub Win64) nie ma własnego okna ani pętli komunikatów. Jest on uruchamiany w oknie konsoli, a dane wejściowe i wyjściowe są obsługiwane za pośrednictwem wiersza polecenia.
Wdrażanie natywnych aplikacji desktopowych Wdrażanie aplikacji natywnych w systemie Windows.
Przewodnik: tworzenie i używanie biblioteki statycznej Jak utworzyć .lib plik binarny.
Kreator aplikacji klasycznej systemu Windows Użyj kreatora, aby utworzyć nowe projekty systemu Windows.
Biblioteka aktywnych szablonów (Active Template Library — ATL) Użyj biblioteki ATL, aby utworzyć składniki COM w języku C++.
Klasy wspólne ATL i MFC Użyj klas, takich jak CString te, które są współużytkowane w ATL i MFC.
Klasy programu Microsoft Foundation (MFC) Używanie MFC do tworzenia dużych lub małych aplikacji systemu Windows za pomocą okien dialogowych i kontrolek
Dostęp do danych OLE DB i ODBC
Tekst i ciągi Różne typy ciągów w systemie Windows.
Praca z plikami zasobów Jak dodawać obrazy, ikony, tabele tekstów i inne zasoby do aplikacji desktopowej.
Zasoby do tworzenia gry przy użyciu języka DirectX (C++) Linki do zawartości służącej do tworzenia gier w języku C++.
Nazwa opis
Programowanie w systemie Windows Zawiera informacje o interfejsie API systemu Windows i modelu COM. (Niektóre interfejsy API systemu Windows i biblioteki DLL innych firm są implementowane jako obiekty COM).
Hilo: Tworzenie aplikacji C++ dla systemu Windows 7 Opisuje sposób tworzenia rozbudowanej aplikacji klasycznej systemu Windows korzystającej z animacji systemu Windows i Direct2D w celu utworzenia interfejsu użytkownika opartego na karuzeli. Ten samouczek nie został zaktualizowany od systemu Windows 7, ale nadal zawiera dokładne wprowadzenie do programowania Win32.
Programowanie na platformie .NET w języku C++/w interfejsie wiersza polecenia Tworzenie otoek dla natywnych bibliotek języka C++, które umożliwiają komunikację z aplikacjami i składnikami platformy .NET.
Rozszerzenia składników dla platformy .NET i uniwersalnej platformy Windows Dokumentacja referencyjna elementów składni udostępnionych przez języki C++/CX i C++/CLI.
Aplikacje uniwersalne systemu Windows (C++) Pisz aplikacje UWP przy użyciu języka C++/CX lub Windows Runtime Template Library (WRL).
Atrybuty języka C++ dla modelu COM i platformy .NET Niestandardowe atrybuty programowania tylko dla systemu Windows przy użyciu platformy .NET lub COM.

Zobacz też

Język C++ w programie Visual Studio