Типы классических приложений 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 являются синонимами.
- Сведения о начале работы с традиционным программированием windows C++ см. в статье "Начало работы с Win32 и C++".
- Пример традиционного классического приложения C++, использующего сложную графику, см. в статье Hilo: Разработка приложений C++ для Windows.
Приложения командной строки (консоль)
Консольные приложения C++ выполняются из командной строки в окне консоли и могут отображать только текстовые выходные данные.
- Дополнительные сведения см. в статье "Создание калькулятора консоли" в C++.
Приложения UWP
Универсальная платформа Windows (UWP) — это современный API Windows. Приложения UWP выполняются в Windows 11, Windows 10, XBox, Windows Phone, Surface Hub и других устройствах. Приложения UWP используют XAML для пользовательского интерфейса и полностью поддерживают сенсорный интерфейс. Классическое приложение отличается от приложения универсальная платформа Windows (UWP).
- Дополнительные сведения о классических приложениях и приложениях UWP см. в разделе "Выбор технологии".
- Дополнительные сведения о UWP см. в статье "Что такое приложение универсальная платформа Windows (UWP) и руководство по универсальным приложениям Windows.
Исходная поддержка 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, а не в коде пользовательского интерфейса.
- Дополнительные сведения см. в статье Программирование .NET с использованием C++/CLI (Visual C++).
Мост для классических приложений
В 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++.
- Дополнительные сведения см. в статье .NET Programming with C++/CLI.
Игры
Игры DirectX могут выполняться на компьютере или Xbox.
- Дополнительные сведения см. в статье DirectX Graphics and Gaming.
Клиенты базы данных SQL Server
Чтобы получить доступ к базам данных SQL Server из машинного кода, используйте ODBC или OLE DB.
- Дополнительные сведения см. в разделе SQL Server Native Client.
Драйверы устройств Windows
Драйверы — это низкоуровневые компоненты, которые делают данные с аппаратных устройств доступными для приложений и других компонентов операционной системы.
- Дополнительные сведения см. в комплекте драйверов Windows (WDK).
Службы 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 включает многофункциональный отладчик для машинного кода, средства статического анализа, графические средства отладки, полнофункциональный редактор кода, поддержку модульных тестов, а также множество других средств и служебных программ.
- Дополнительные сведения см. в статье "Начало разработки с помощью Visual Studio" и обзор разработки C++ в 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. |