Классические приложения (Visual C++)
классическое приложение на C++ — это собственное приложение, которое имеет доступ к полному набору интерфейсов Windows api и запускается в окне или в системной консоли. настольные приложения на C++ могут работать в Windows xp с помощью Windows 10 (хотя Windows xp более официально не поддерживается и существует множество api-интерфейсов Windows, которые появились с момента этого).
классическое приложение отличается от приложения универсальная платформа Windows (UWP), которое может выполняться на компьютерах под управлением Windows 10, а также на XBox, Windows Phone, Surface Hub и других устройствах. Дополнительные сведения о настольных и универсальных приложениях UWP см. в статье Выбор технологии.
Мост для классических приложений
в Windows 10 можно упаковать существующее классическое приложение или COM-объект в качестве приложения uwp и добавить функции UWP, такие как touch, или вызвать api из современного набора api Windows. можно также добавить приложение UWP в решение для настольных систем в Visual Studio и упаковать их вместе в одном пакете и использовать интерфейсы Windows api для взаимодействия между ними.
в Visual Studio 2017 версии 15,4 и более поздних версиях можно создать Windows пакет приложения Project, чтобы значительно упростить работу по упаковке существующего настольного приложения. В отношении того, какие вызовы реестра или API-интерфейсы используются настольным приложением, применяются некоторые ограничения, но во многих случаях можно создать альтернативные пути кода для обеспечения аналогичной функциональности при работе в пакете приложения. Дополнительные сведения см. в статье Мост для классических приложений.
Терминология
Модель COM — это спецификация, которая позволяет программам, написанным на разных языках, взаимодействовать друг с другом. многие компоненты Windows реализуются как com-объекты и следуют стандартным правилам COM для создания объектов, обнаружения интерфейсов и уничтожения объектов. Использование объектов COM из классических приложений C++ относительно просто, но написание собственного COM-объекта является более сложным. Библиотека активных шаблонов (ATL) предоставляет макросы и вспомогательные функции, УПРОЩАЮЩИЕ разработку com.
приложение MFC — это Windows классическое приложение, которое использует Microsoft Foundation Classes для создания пользовательского интерфейса. Приложение MFC также может использовать компоненты COM, а также API CRT и библиотеки стандартных библиотек. MFC предоставляет объектно-ориентированную оболочку с тонким C++ для циклов оконных сообщений и Windows api. MFC является выбором по умолчанию для приложений (особенно приложений корпоративного типа), которые имеют множество элементов управления пользовательского интерфейса или пользовательских элементов управления. MFC предоставляет удобные вспомогательные классы для управления окнами, сериализации, обработки текста, печати и современных элементов пользовательского интерфейса, таких как лента. Для эффективной работы с MFC вы должны быть знакомы с Win32.
любое классическое приложение в C++ может использовать среду выполнения C (CRT), классы и функции стандартной библиотеки, COM-объекты и открытые функции Windows, которые вместе называются Windows API. общие сведения о Windows классических приложениях на c++ см. в разделе Начало работы с Win32 и C++.
Практическое руководство. Использование пакета SDK Windows 10 в классическом приложении Windows
при создании проекта классического Windows рабочего стола в Visual Studio он по умолчанию обращается к пакету SDK для Windows 10. Visual Studio устанавливает версию этого пакета SDK при установке рабочей нагрузки C++ для настольных систем. пакет SDK для Windows 10 поддерживает написание кода для Windows 7 SP1 и более поздних версий. дополнительные сведения о нацеливании на конкретные версии Windows см. в разделе использование Windows заголовков и обновление WINVER и _WIN32_WINNT.
при обновлении существующего проекта можно выбрать один из вариантов: можно использовать целевой Windows SDK, указанный в проекте. также можно перенацелить проект для использования пакета SDK для Windows 10. с помощью пакета SDK для Windows 10 вы получаете преимущества поддержки новейших операционных систем и языковых стандартов.
использование правильного Windows SDK для проекта
начиная с Visual Studio 2015, библиотека среды выполнения C (CRT) была разделена на две части: одна часть, ucrtbase, содержит стандартные функции crt C и Microsoft, которые можно использовать в универсальных Windows приложениях. эта библиотека теперь называется универсальной библиотекой CRT или UCRT и перешла в пакет SDK Windows 10. UCRT содержит множество новых функций, таких как функции C99, которые необходимы для поддержки новейших стандартов языка C++. Другая часть исходной CRT — vcruntime. Он содержит поддержку, запуск и код завершения среды выполнения C, а также все остальное, которые не были отправлены в UCRT. Библиотека vcruntime устанавливается вместе с компилятором и набором средств C++ в Visual Studio. Дополнительные сведения см. в разделе функции библиотеки CRT.
UCRT теперь является системным компонентом, установленным на каждой версии Windows 10. Он также доступен как устанавливаемый компонент для всех более ранних поддерживаемых версий Windows. вы можете использовать Windows 10 SDK для всех поддерживаемых версий Windows. полный список поддерживаемых операционных систем см. в разделе Windows 10 SDK.
чтобы перенацелить проекты на использование пакета SDK для Windows 10 при обновлении версии проекта до Visual Studio 2015, выполните следующие действия.
Изменение целевой платформы для пакета SDK для Windows 10
8,1 в этом контексте относится к пакету SDK для Windows 8.1.
Если этот шаг выполнен успешно, в окне вывода появится следующее сообщение.
Retargeting End: 1 completed, 0 failed, 0 skipped
Откройте диалоговое окно Свойства проекта. в разделе свойства конфигурации > общие обратите внимание на значения Windows версия целевой платформы. Изменение значения на данном этапе действует аналогично данной процедуре. Дополнительные сведения см. в разделе Страница свойств «Общие» (проект).
нажмите кнопку макросы >> и прокрутите список макросов до Windows SDK макросов, чтобы просмотреть все новые значения.
При необходимости повторите процедуру перенаправления для других проектов решений и перестройте решение.
Изменение целевой платформы для пакета SDK для Windows 8.1
Откройте контекстное меню узла проекта в обозреватель решений и выберите пункт перенацелить проекты. (в более ранних версиях Visual Studio выберите изменить целевую версию пакета SDK.)
В раскрывающемся списке Версия целевой платформы выберите 8,1.
Настройка классического приложения для упаковки с помощью MSIX в Visual Studio
Для создания пакета для классического приложения в Visual Studio можно использовать Проект упаковки приложений Windows. Затем вы можете распространить пакет в Microsoft Store, в Интернете, на своем предприятии или с помощью любого другого механизма распространения.
Требуемая версия и рабочая нагрузка Visual Studio
Проект упаковки приложений Windows доступен в приведенных ниже версиях Visual Studio.
Чтобы шаблон проекта упаковки приложений Windows отобразился в меню «Добавление проекта», убедитесь, что у вас установлена хотя бы одна из следующих рабочих нагрузок Visual Studio:
Для оптимальной работы рекомендуем использовать последний выпуск Visual Studio.
Проект упаковки приложений Windows в Visual Studio поддерживается в Windows 10 версии 1607 и более поздних версиях. Его можно использовать только в проектах, предназначенных для юбилейного обновления Windows 10 (10.0; сборка 14393) или более поздней версии.
Ниже приведены некоторые другие действия, которые можно выполнить в проекте упаковки приложений Visual Studio.
✔️ Автоматическое создание визуальных ресурсов.
✔️ Внесение изменений в манифест с помощью визуального конструктора.
✔️ Создание пакета или набора с использованием мастера.
✔️ (При публикации в Microsoft Store) Простое назначение приложению идентификатора на основе имени, уже зарезервированного в Центре партнеров.
Подготовьте свое приложение
Прежде чем приступить к созданию пакета для приложения, ознакомьтесь с этим руководством. Prepare to package a desktop application (Подготовка к упаковке классического приложения).
Установите Проект упаковки приложения Windows в свое решение.
Приведенные ниже снимки экрана относятся к Visual Studio 2019 16.10.
В Visual Studio откройте решение, содержащее проект вашего классического приложения.
Добавьте Проект упаковки приложения Windows в свое решение.
Вам не потребуется добавлять в него какой-либо код. Он используется только для создания пакета. Мы будем называть этот проект «проектом упаковки».
Задайте целевую версию проекта (любую), но для параметра Минимальная версия укажите значение Юбилейное обновление Windows 10 или более позднюю версию.
Выберите пакет классического приложения и нажмите кнопку ОК.
В пакет можно включить несколько классических приложений, однако, когда пользователи выбирают плитку с вашим приложением, запустить можно только одно из них. В узле Приложения щелкните правой кнопкой мыши приложение, которое пользователи должны запускать, выбирая плитку приложения, и выберите Задать как точку входа.
Соберите проект упаковки, чтобы убедиться, что ошибок нет. При возникновении ошибок откройте Диспетчер конфигурации и убедитесь, что проекты предназначены для той же платформы.
Дальнейшие действия
Упаковка классического приложения в Visual Studio
См. статью Package a desktop or UWP app in Visual Studio (Упаковка классического приложения или приложения UWP в Visual Studio)
Запуск, отладка и тестирование классических приложений
Дополнительные ресурсы
Видео
Call UWP APIs in desktop apps (Вызов API UWP в классических приложениях)
Улучшение классического приложения путем добавления проектов UWP и компоненты среды выполнения Windows
См. в статье Extend your desktop app with modern UWP components (Улучшение классических приложений с помощью современных компонентов UWP).
Распространение приложения
См. статью Distribute your packaged desktop app (Распространение упакованного классического приложения)
Мастер классических приложений Windows
мастер Windows Desktop заменил мастер приложений Win32 в Visual Studio 2017 и более поздних версиях. Мастер позволяет создавать любые из четырех типов проектов C++ (перечисленных в заголовке в таблице ниже). В каждом случае можно указать дополнительные параметры, подходящие для открытого вами типа проекта.
В таблице ниже показано, какие параметры доступны для каждого типа приложения.
Тип поддержки | Консольное приложение | Исполняемое приложение (Windows) | Библиотека динамической компоновки | Статическая библиотека |
---|---|---|---|---|
Пустой проект | Да | Да | Да | Нет |
Символы экспорта | Нет | Нет | Да | Нет |
Предкомпилированный заголовок | Нет | Нет | Нет | Да |
поддержка ATL | Да | Нет | Нет | Нет |
поддержка MFC | Да | Нет | Нет | Да |
Обзор
На этой странице мастера описываются текущие параметры проекта для создаваемого приложения Win32. По умолчанию заданы следующие параметры:
проект является приложением Windows;
проект не содержит символов экспорта;
проект не использует файл предкомпилированного заголовка (этот параметр доступен только для проектов статической библиотеки);
проект не включает поддержку MFC и ATL.
Тип приложения
Создает указанный тип приложения.
Можно добавить поддержку MFC и ATL в консольное приложение.
невозможно добавить поддержку MFC или ATL в приложение Windows.
нельзя добавить поддержку mfc или ATL в приложение dll, созданное с помощью этого мастера, но можно создать библиотеку dll mfc, выбрав New > Project > MFC dll.
— Статическая библиотека Win32 полезна, если приложение, над которым вы работаете, выполняет вызовы к API Win32, а не к классам MFC.
— процесс связывания одинаков независимо от того, пишется ли остальная часть приложения Windows на языке C или C++.
— Можно связать статическую библиотеку с программой на основе MFC или с программой, отличной от MFC.
Дополнительные параметры
Определяет поддержку и параметры для приложения в зависимости от его типа.
Параметр | Описание | ||||
---|---|---|---|---|---|
Пустой проект | Указывает, что файлы проекта пусты. При наличии набора файлов исходного кода (например, CPP-файлов, файлов заголовков, значков, панелей инструментов, диалоговых окон и т. д.) и необходимости создания проекта в среде разработки Visual C++ необходимо сначала создать пустой проект, а затем добавить файлы в проект. Добавьте общие заголовки для:Добавлена поддержка одной из библиотек, представленных в Visual C++.
|