Общие сведения о программировании на C++ в Windows

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

в этом разделе описано, как использовать Visual Studio и библиотеки оболочек MFC/ATL для создания Windows программ. документацию по самой платформе Windows см. в документации по Windows.

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

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

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

Собственное клиентское приложение для настольных систем — это оконное приложение c или C++, которое использует исходные интерфейсы API Windows c или COM для доступа к операционной системе. Эти интерфейсы API написаны в основном на языке C. Существует несколько способов создания собственного классического приложения: вы можете программировать напрямую с помощью API-интерфейсов Win32, используя цикл сообщений в стиле C, который обрабатывает события операционной системы. Или можно программировать с помощью Microsoft Foundation Classes (MFC), объектно-ориентированной библиотеки C++, которая заключает в оболочку Win32. ни один из подходов не считается "современным" по сравнению с универсальная платформа Windows (UWP), но оба они все еще полностью поддерживаются и миллионы строк кода работают в мире уже сегодня. приложение Win32, выполняемое в окне, требует, чтобы разработчик работал явно с Windows сообщениями внутри функции Windows процедуры. Несмотря на имя, приложение Win32 можно скомпилировать 32 как 64-разрядный (x86) или 64-разрядный (x64) двоичный файл. в Visual Studio IDE термины x86 и Win32 являются синонимами.

чтобы приступить к работе с традиционным программированием Windows C++, см. статью Начало работы с Win32 и C++. Когда вы получите представление об использовании Win32, будет проще изучить классическое приложение MFC. Пример традиционного классического приложения C++, использующего сложную графику, см. в разделе Hilo: Разработка приложений c++ для Windows.

C++ или .NET?

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

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

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

COM-компоненты

Модель COM — это спецификация, которая позволяет программам, написанным на разных языках, взаимодействовать друг с другом. многие компоненты Windows реализуются как com-объекты и следуют стандартным правилам COM для создания объектов, обнаружения интерфейсов и уничтожения объектов. Использование объектов COM из классических приложений C++ относительно просто, но написание собственного COM-объекта является более сложным. Библиотека активных шаблонов (ATL) предоставляет макросы и вспомогательные функции, УПРОЩАЮЩИЕ разработку com. Дополнительные сведения см. в разделе компоненты ATL com Desktop.

Приложения универсальной платформы Windows

универсальная платформа Windows (UWP) — это современный Windows API. приложения UWP выполняются на любом Windows 10 или Windows 11 устройстве. Они используют XAML для пользовательского интерфейса и полностью поддерживают касание. дополнительные сведения об универсальном контроллере платформы windows см. Windows встатье что такое приложение универсальная платформа Windows (uwp)?

исходная поддержка c++ для UWP состояла из (1) c++/cx, диалекта c++ с расширениями синтаксиса или (2) библиотеки среда выполнения Windows (WRL), основанной на стандартном C++ и COM. C++/CX и WRL по-прежнему поддерживаются, но не рекомендуются для новой разработки. Для новых проектов рекомендуется использовать c++/WinRT, который полностью основан на стандартном c++ и обеспечивает более высокую производительность.

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

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

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

Игры

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

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

для доступа к базам данных SQL Server из машинного кода используйте ODBC или OLE DB. Дополнительные сведения см. в разделе SQL Server Native Client.

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

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

Службы Windows

служба Windows — это программа, которая может выполняться в фоновом режиме с небольшим или без участия пользователя. эти программы называются демоны на UNIX systems. Дополнительные сведения см. в разделе Службы.

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

Visual Studio включает библиотеку времени выполнения C (CRT), стандартную библиотеку C++ и другие библиотеки, относящиеся к Microsoft. большинство папок включения, содержащих файлы заголовков для этих библиотек, находятся в каталоге установки Visual Studio в папке \вк\. файлы заголовков Windows и CRT находятся в папке установки Windows SDK.

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

К библиотекам Майкрософт относятся:

  • 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 устанавливает Windows SDK как компонент рабочей нагрузки C++ для настольных систем, что позволяет разрабатывать универсальные приложения Windows. для разработки приложений UWP требуется Windows 10 или более поздней версии Windows SDK. дополнительные сведения и ссылка для загрузки см. в разделе Windows SDK. (дополнительные сведения о Windows пакетах sdk для более ранних версий Windows см. в Windows SDK архиве).

Program files (x86) \ Windows kits — это расположение по умолчанию для всех версий Windows SDK, которые вы установили.

Другие платформы, например Xbox и Azure, обладают собственными пакетами SDK, которые вам, возможно, потребуется установить. Дополнительные сведения см. в Центре разработчика DirectX и в Центре разработчика Azure.

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

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

Содержимое раздела

-- --
Пошаговое руководство. Создание стандартной программы на языке C++ создайте Windows консольное приложение.
Пошаговое руководство. Создание классических приложений Windows (C++) создание собственного Windows классического приложения.
Мастер классических приложений Windows используйте мастер для создания новых Windows проектов.
Библиотека шаблонных классов (ATL) Использование библиотеки ATL для создания COM-компонентов в C++.
Microsoft Foundation Classes (MFC) использование MFC для создания больших или мелких Windows приложений с помощью диалоговых окон и элементов управления
Общие классы ATL и MFC Используйте такие классы, как CString, которые являются общими в ATL и MFC.
Доступ к данным OLE DB и ODBC
Текст и строки Различные типы строк в Windows.
Ресурсы для создания игры с помощью DirectX
Работа с файлами ресурсов Добавление изображений, значков, таблиц строк и других ресурсов в классическое приложение.
Ресурсы для создания игры с использованием DirectX (C++) Ссылки на материалы по созданию игр на C++.
как использовать Windows SDK в Windows приложении для настольных компьютеров содержит шаги по настройке проекта для построения с помощью Windows SDK.
Развертывание классических приложений Развертывание собственных приложений на Windows.
Заголовок Описание
C++ в Visual Studio Родительский раздел для Visual C++ содержимого для разработчиков.
Разработка для .NET на C++/CLI Создание оболочек для собственных библиотек C++, обеспечивающих взаимодействие с приложениями и компонентами .NET.
Расширения компонентов для .NET и UWP Справочник по элементам синтаксиса, совместно используемым C++/CX и C++/CLI.
Универсальные приложения Windows (C++) создание приложений UWP с помощью C++/cx или библиотеки шаблонов среда выполнения Windows (WRL).
Атрибуты C++ для модели COM и .NET нестандартные атрибуты для программирования только Windows с использованием .net или COM.