Типы классических приложений Windows C++

Классическое приложение в C++ — это собственное приложение , которое может получить доступ к полному набору API Windows, а также выполняется в окне или в системной консоли. Классические приложения в C++ могут работать в Windows XP через Windows 11 (хотя Windows XP больше не поддерживается официально и с тех пор существует множество новых API Windows).

Любое классическое приложение в C++ может использовать классы и функции и функции стандартной библиотеки, com-объекты и общедоступные функции Windows, которые вместе называются API Windows. Общие сведения о классических приложениях Windows в C++см. в статье "Начало работы с Win32 и C++".

Существует несколько широких категорий приложений Windows, которые можно создать с помощью C++, описанных ниже. Каждая из них имеет собственную модель программирования и набор библиотек, относящихся к Windows. Стандартная библиотека C++ и сторонние библиотеки C++ можно использовать в любом из них.

Документация по самой платформе Windows см . в документации по Windows.

Собственные клиентские приложения для настольных компьютеров

Собственное клиентское приложение для настольных компьютеров или приложение Win32 — это классическое приложение Windows, написанное на языке C++ с собственными API-интерфейсами Windows C или ИНТЕРФЕЙСами API-интерфейсов CRT и стандартной библиотеки, а также сторонними библиотеками. Приложению Win32, работающему в окне, требуется, чтобы разработчик обрабатывал сообщения Windows в функции процедуры Windows. Несмотря на имя, приложение Win32 можно скомпилировать как 32-разрядный (x86) или 64-разрядный (x64) двоичный файл. В интегрированной среде разработки Visual Studio термины x86 и Win32 являются синонимами.

Приложения командной строки (консоль)

Консольные приложения C++ выполняются из командной строки в окне консоли и могут отображать только текстовые выходные данные.

Приложения UWP

Универсальная платформа Windows (UWP) — это современный API Windows. Приложения UWP работают в Windows 11, Windows 10, XBox, Windows Телефон, Surface Hub и других устройствах. Приложения UWP используют XAML для пользовательского интерфейса и полностью поддерживают сенсорный интерфейс. Классическое приложение отличается от приложения универсальная платформа Windows (UWP).

Исходная поддержка C++ для UWP состоит из C++/CX, диалектА C++ с расширениями синтаксиса или библиотеки среда выполнения Windows (WRL), основанной на стандарте C++ и COM. C++/CX и WRL по-прежнему поддерживаются, но не рекомендуется для новой разработки.

Для новых проектов рекомендуется использовать C++/WinRT, который полностью основан на стандарте C++ и обеспечивает более высокую производительность.

Приложение или компонент C++/CLI использует расширения для синтаксиса C++ (как разрешено стандартом C++), чтобы обеспечить взаимодействие между .NET и машинным кодом C++. Приложение C++/CLI может иметь части, которые выполняются в собственном коде и части, которые выполняются в платформа .NET Framework с доступом к библиотеке базовых классов .NET. C++/CLI — это предпочтительный вариант, если у вас есть собственный код C++, который должен работать с кодом, написанным на C# или Visual Basic. Он предназначен для использования в библиотеках DLL .NET, а не в коде пользовательского интерфейса.

Мост для классических приложений

В Windows 10 и более поздних версий можно упаковывать существующее классическое приложение или COM-объект в виде приложения UWP. Он может использовать такие функции UWP, как сенсорный интерфейс или вызов API из современного набора API Windows. Вы также можете добавить приложение UWP в классическое решение в Visual Studio, упаковать их вместе в одном пакете и использовать API Windows для обмена данными между ними.

Visual Studio 2017 версии 15.4 и более поздних версий позволяет создать проект пакета приложений Windows, чтобы значительно упростить работу упаковки существующего классического приложения. Некоторые ограничения применяются к вызовам реестра или API, которые могут использовать классическое приложение. Однако во многих случаях можно создавать альтернативные пути кода для достижения аналогичных функциональных возможностей во время выполнения в пакете приложения.

C++ или .NET?

Как правило, программирование .NET в C# менее сложно, менее подвержено ошибкам и имеет более современный объектно-ориентированный API, чем Win32 или MFC. В большинстве случаев его производительность является более чем достаточной.

.NET поддерживает Windows Presentation Foundation (WPF) для полнофункциональные графические элементы, и вы можете использовать как Win32, так и современный API среда выполнения Windows. В качестве общего правила рекомендуется использовать C++ для классических приложений при необходимости:

  • точный контроль использования памяти
  • Максимальная экономика в потреблении электроэнергии
  • использование GPU для общих вычислений
  • доступ к DirectX
  • интенсивное использование стандартных библиотек C++

Кроме того, можно объединить мощность и эффективность C++ с программированием .NET. Вы можете создать пользовательский интерфейс в C# и использовать C++/CLI, чтобы приложение потребляло собственные библиотеки C++.

Игры

Игры DirectX могут выполняться на компьютере или Xbox.

Клиенты базы данных SQL Server

Чтобы получить доступ к базам данных SQL Server из машинного кода, используйте ODBC или OLE DB.

Драйверы устройств Windows

Драйверы — это низкоуровневые компоненты, которые делают данные с аппаратных устройств доступными для приложений и других компонентов операционной системы.

Службы Windows

Служба Windows — это программа, которая может выполняться в фоновом режиме без взаимодействия с пользователем. Эти программы называются daemons в системах UNIX.

  • Дополнительные сведения см. в разделе Службы.

COM

Объектная модель компонента (COM) — это спецификация, которая позволяет программам, написанным на разных языках, взаимодействовать друг с другом.

Многие компоненты Windows реализуются как COM-объекты и соответствуют стандартным правилам COM для создания объектов, обнаружения интерфейсов и уничтожения объектов. Использование COM-объектов из классических приложений C++ является относительно простым, но написание собственного COM-объекта является более сложным.

Библиотека активных шаблонов (ATL) предоставляет макросы и вспомогательные функции, упрощающие разработку COM. Дополнительные сведения см. в статье о классических компонентах ATL COM.

MFC

Приложение MFC — это классическое приложение Windows, использующее классы Microsoft Foundation для создания пользовательского интерфейса. Приложение MFC также может использовать COM-компоненты и API CRT и стандартной библиотеки.

MFC предоставляет тонкий объектно-ориентированный оболочку C++ через цикл сообщений окна и API Windows. MFC — это выбор по умолчанию для приложений, особенно приложений корпоративного типа, имеющих множество элементов управления пользовательским интерфейсом или пользовательских элементов управления.

MFC предоставляет удобные вспомогательные классы для управления окнами, сериализации, обработки текста, печати и современных элементов пользовательского интерфейса, таких как лента. Чтобы быть эффективным с MFC, вы должны быть знакомы с Win32.

Пакеты SDK, библиотеки и файлы заголовков

Visual Studio включает библиотеку среды выполнения C (CRT), стандартную библиотеку C++ и другие библиотеки, относящиеся к Корпорации Майкрософт. Большинство папок, содержащих файлы заголовков для этих библиотек, находятся в каталоге установки Visual Studio в папке \VC\ (например, C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\). Файлы заголовков Windows и CRT находятся в папке установки пакета SDK для Windows (например, C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

Диспетчер пакетов vcpkg позволяет удобно устанавливать сотни сторонних библиотек с открытым исходным кодом для Windows. Дополнительные сведения см. на странице о vcpkg.

Библиотеки Microsoft:

  • Microsoft Foundation Classes (MFC): объектно-ориентированная платформа для создания традиционных программ Windows (в частности, корпоративных приложений), со сложным пользовательским интерфейсом, включающим кнопки, поля списков, древовидные структуры и другие элементы управления. Дополнительные сведения см. в разделе MFC Desktop Applications.

  • Active Template Library (ATL): многофункциональная вспомогательная библиотека для создания компонентов COM. Для получения дополнительной информации см. ATL COM Desktop Components.

  • C++ AMP (C++ Accelerated Massive Parallelism): библиотека, предоставляющая возможность выполнять высокопроизводительные вычислительные задачи общего характера в графическом процессоре. Для получения дополнительной информации см. C++ AMP (C++ Accelerated Massive Parallelism).

  • Среда выполнения с параллелизмом: библиотека, упрощающая параллельное и асинхронное программирование для мультиядерных и многоядерных устройств. Дополнительные сведения см.в статье Concurrency Runtime (Среда выполнения с параллелизмом).

Для многих сценариев программирования Windows также требуется пакет Windows SDK, в который входят файлы заголовков, обеспечивающие доступ к компонентам операционной системы Windows. По умолчанию Visual Studio устанавливает пакет SDK для Windows в качестве компонента рабочей нагрузки C++ Desktop, которая обеспечивает разработку универсальных приложений Windows. Для разработки приложений UWP требуется windows 10 или более поздняя версия пакета SDK для Windows.

  • Дополнительные сведения и ссылка на скачивание см. в пакете SDK для Windows.
  • Дополнительные сведения о пакетах SDK для Windows для более ранних версий Windows см. в архиве пакета SDK для Windows.

Расположение по умолчанию для всех установленных версий пакета SDK для Windows: Program Files (x86)\Windows Kits

Средства разработки

Visual Studio включает многофункциональный отладчик для машинного кода, средства статического анализа, графические средства отладки, полнофункциональный редактор кода, поддержку модульных тестов, а также множество других средств и служебных программ.

В этом разделе

Установить связь Description
Пошаговое руководство. Создание классических приложений Windows (C++) Создайте собственное классическое приложение Windows.
Практическое руководство. Использование пакета SDK для Windows в классическом приложении Windows Содержит шаги по настройке проекта для сборки с помощью пакета SDK для Windows.
Пошаговое руководство. Создание стандартной программы C++ Создайте консольное приложение Windows.
Пошаговое руководство. Создание калькулятора консоли в C++ Создайте простое консольное приложение Windows. Консольное приложение Win32 (или Win64) не имеет собственного окна и цикла обработки сообщений. Оно выполняется в окне консоли, а ввод и вывод обрабатываются через командную строку.
Развертывание собственных классических приложений Развертывание собственных приложений в Windows.
Пошаговое руководство. Создание и использование статической библиотеки .lib Создание двоичного файла.
Мастер классических приложений Windows Используйте мастер для создания новых проектов Windows.
Библиотека шаблонных классов (ATL) Используйте библиотеку ATL для создания COM-компонентов в C++.
Общие классы ATL и MFC Используйте классы, такие как CString общие в ATL и MFC.
Microsoft Foundation Classes (MFC) Создание больших или небольших приложений Windows с диалогами и элементами управления с помощью MFC
Доступ к данным OLE DB и ODBC
Текст и строки Различные типы строк в Windows.
Работа с файлами ресурсов Добавление изображений, значков, строковых таблиц и других ресурсов в классическое приложение.
Ресурсы для создания игры с помощью DirectX (C++) Ссылки на содержимое для создания игр в C++.
Заголовок Description
Разработка Windows Содержит сведения об API Windows и COM. (Некоторые API-интерфейсы Windows и сторонние библиотеки DLL реализованы в виде объектов COM).
Hilo: разработка приложений C++ для Windows 7 Описание способов создания классического приложения Windows, использующего анимацию Windows и Direct2D для создания интерфейса пользователя по принципу карусели. Это руководство не было обновлено с Windows 7, но по-прежнему предоставляет подробные сведения о программировании Win32.
Разработка на .NET с использованием C++ и CLI Создайте оболочки для собственных библиотек C++, которые позволяют ему работать с приложениями и компонентами .NET.
Расширения компонентов для .NET и UWP Справочник по элементам синтаксиса, совместно используемым C++/CX и C++/CLI.
Универсальные приложения Для Windows (C++) Запись приложений UWP с помощью C++/CX или библиотеки шаблонов среда выполнения Windows (WRL).
Атрибуты C++ для модели COM и .NET Нестандартные атрибуты для программирования только для Windows с помощью .NET или COM.

См. также

C++ в Visual Studio