Typy aplikacji klasycznych systemu Windows C++
Aplikacja klasyczna w języku C++ to natywna aplikacja, która może uzyskiwać dostęp do pełnego zestawu interfejsów API systemu Windows i działa w oknie lub w konsoli systemu. 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 klasyczna w języku C++ może używać klas i funkcji biblioteki standardowej C Runtime (CRT) oraz funkcji COM oraz publicznych funkcji systemu Windows, które są wspólnie nazywane interfejsem API systemu Windows. Aby zapoznać się z wprowadzeniem do aplikacji klasycznych systemu Windows w języku C++, zobacz Wprowadzenie do win32 i 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.
- Aby rozpocząć pracę z tradycyjnym programowaniem w języku Windows C++, zobacz Wprowadzenie do win32 i C++.
- Aby zapoznać się z przykładem tradycyjnej aplikacji klasycznej języka C++, która korzysta z zaawansowanej grafiki, zobacz Hilo: Tworzenie aplikacji C++ dla systemu Windows.
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.
- Aby uzyskać więcej informacji, zobacz Tworzenie kalkulatora konsoli w języku C++.
Aplikacje platformy uniwersalnej systemu Windows
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 platformy UNIWERSALNEJ systemu Windows używają języka XAML dla interfejsu użytkownika i są w pełni włączone do obsługi dotykowej. Aplikacja klasyczna różni się od aplikacji platforma uniwersalna systemu Windows (UWP).
- Aby uzyskać więcej informacji na temat aplikacji klasycznych i aplikacji platformy uniwersalnej systemu Windows, zobacz Wybieranie technologii.
- Aby uzyskać więcej informacji na temat platformy UWP, zobacz Co to jest aplikacja platforma uniwersalna systemu Windows (UWP) i Przewodnik po uniwersalnych aplikacjach systemu Windows.
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.
- Aby uzyskać więcej informacji, zobacz Programowanie .NET za pomocą języka C++/CLI (Visual C++).
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 platformy UNIWERSALNEJ systemu Windows, takich jak dotyk, lub wywoływać interfejsy API z nowoczesnego zestawu interfejsów 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.
Program Visual Studio 2017 w wersji 15.4 lub nowszej umożliwia utworzenie projektu pakietu aplikacji systemu Windows, aby znacznie uprościć pracę tworzenia pakietów istniejących aplikacji klasycznych. Kilka ograniczeń dotyczy wywołań rejestru lub interfejsów API, których może używać aplikacja klasyczna. Jednak w wielu przypadkach można utworzyć alternatywne ścieżki kodu, aby osiągnąć podobne funkcje podczas uruchamiania w pakiecie aplikacji.
- Aby uzyskać więcej informacji, zobacz Mostek dla aplikacji klasycznych.
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 platformę Windows Presentation Foundation (WPF) w celu uzyskania rozbudowanej grafiki i można korzystać zarówno z win32, jak i nowoczesnego interfejsu API środowisko wykonawcze systemu Windows. 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
- najwyższa ekonomia zużycia 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++.
- Aby uzyskać więcej informacji, zobacz .NET Programming with C++/CLI (Programowanie na platformie .NET za pomocą języka C++/interfejsu wiersza polecenia).
Gry
Gry DirectX można uruchamiać na komputerze pc lub Xbox.
- Aby uzyskać więcej informacji, zobacz DirectX Graphics and Gaming (Grafika i gry DirectX).
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.
- Aby uzyskać więcej informacji, zobacz SQL Server Native Client.
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.
- Aby uzyskać więcej informacji, zobacz Windows Driver Kit (WDK).
Usługi systemu Windows
Usługa systemu Windows to program, który może działać w tle z małą lub małą interakcją użytkownika. Te programy są nazywane demonami w systemach UNIX.
- Aby uzyskać więcej informacji, zobacz Usługi.
Model 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 przestrzegać standardowych reguł COM dotyczących tworzenia obiektów, odnajdywania interfejsu 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ą otokę obiektową języka C++ na pętli komunikatów okna i interfejsach 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 współbieżności: Biblioteka, która upraszcza pracę przy programowaniu współbieżnym i asynchronicznym dla urządzeń wielordzeniowych. Aby uzyskać więcej informacji, zobacz Środowisko uruchomieniowe współbieżności.
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 platformy UNIWERSALNEJ systemu Windows, potrzebujesz systemu Windows 10 lub nowszej wersji zestawu Windows SDK.
- Aby uzyskać więcej informacji i link pobierania, zobacz Zestaw WINDOWS SDK.
- 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.
- Aby uzyskać więcej informacji, zobacz Wprowadzenie do programowania za pomocą programu Visual Studio i Omówienie programowania w języku C++ w programie Visual Studio.
W tym obszarze
Link | opis |
---|---|
Przewodnik: tworzenie aplikacji klasycznych systemu Windows (C++) | Utwórz natywną aplikację klasyczną 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 klasycznych | 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 udostępnione ATL i MFC | Użyj klas, takich jak CString te, które są współużytkowane w ATL i MFC. |
Microsoft Foundation Classes (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 ciągów i inne zasoby do aplikacji klasycznej. |
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++. |
Powiązane artykuły
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 platformy uniwersalnej systemu Windows | Dokumentacja elementów składni udostępnionych przez języki C++/CX i C++/CLI. |
Aplikacje uniwersalne systemu Windows (C++) | Pisanie aplikacji platformy UWP przy użyciu języka C++/CX lub biblioteki szablonów środowisko wykonawcze systemu Windows (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. |