Создание классического приложения windows

Классические приложения (Visual C++) Desktop Applications (Visual C++)

Классическое приложение на C++ — это собственное приложение, которое имеет доступ к полному набору интерфейсов API Windows и запускается в окне или в системной консоли. A desktop application in C++ is a native application that can access the full set of Windows APIs and either runs in a window or in the system console. Настольные приложения в C++ могут работать в Windows XP с Windows 10 (хотя Windows XP более официально не поддерживается и существует множество API-интерфейсов Windows, которые появились с этого момента). Desktop applications in C++ can run on Windows XP through Windows 10 (although Windows XP is no longer officially supported and there are many Windows APIs that have been introduced since then).

Классическое приложение отличается от приложения универсальная платформа Windows (UWP), которое может работать на компьютерах под управлением Windows 10, а также на XBox, Windows Phone, Surface Hub и других устройствах. A desktop application is distinct from a Universal Windows Platform (UWP) app, which can run on PCs running Windows 10, and also on XBox, Windows Phone, Surface Hub, and other devices. Дополнительные сведения о настольных и универсальных приложениях UWP см. в статье Выбор технологии. For more information about desktop vs. UWP applications, see Choose your technology.

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

В Windows 10 можно упаковать существующее классическое приложение или COM-объект в качестве приложения UWP и добавить функции UWP, такие как сенсорный ввод, или вызвать API из современного набора API Windows. In Windows 10 you can package your existing desktop application or COM object as a UWP app and add UWP features such as touch, or call APIs from the modern Windows API set. Можно также добавить приложение UWP в решение для настольных систем в Visual Studio и упаковать их в один пакет и использовать интерфейсы API Windows для обмена данными между ними. You can also add a UWP app to a desktop solution in Visual Studio, and package them together in a single package and use Windows APIs to communicate between them.

В Visual Studio 2017 версии 15,4 и более поздних версий можно создать проект пакета приложений Windows, чтобы значительно упростить работу по упаковке существующего настольного приложения. In Visual Studio 2017 version 15.4 and later, you can create a Windows Application Package Project to greatly simplify the work of packaging your existing desktop application. В отношении того, какие вызовы реестра или API-интерфейсы используются настольным приложением, применяются некоторые ограничения, но во многих случаях можно создать альтернативные пути кода для обеспечения аналогичной функциональности при работе в пакете приложения. A few restrictions apply with respect to what registry calls or APIs your desktop application uses, but in many cases you can create alternate code paths to achieve similar functionality while running in an app package. Дополнительные сведения см. в статье Мост для классических приложений. For more information, see Desktop Bridge.

Терминология Terminology

Приложение Win32 — это классическое приложение Windows на языке C++, которое может использовать встроенные API -Интерфейсы C Windows и (или ) API CRT и API стандартной библиотеки, а также сторонние библиотеки. A Win32 application is a Windows desktop application in C++ that can make use of native Windows C APIs and/or COM APIs CRT and Standard Library APIs, and 3rd party libraries. Приложение Win32, выполняемое в окне, требует, чтобы разработчик работал явно с сообщениями Windows внутри функции процедуры Windows. A Win32 application that runs in a window requires the developer to work explicitly with Windows messages inside a Windows procedure function. Несмотря на имя, приложение Win32 можно скомпилировать 32 как 64-разрядный (x86) или 64-разрядный (x64) двоичный файл. Despite the name, a Win32 application can be compiled as a 32-bit (x86) or 64-bit (x64) binary. В интегрированной среде разработки Visual Studio термины x86 и Win32 являются синонимами. In the Visual Studio IDE, the terms x86 and Win32 are synonymous.

Модель COM — это спецификация, которая позволяет программам, написанным на разных языках, взаимодействовать друг с другом. The Component Object Model (COM) is a specification that enables programs written in different languages to communicate with one another. Многие компоненты Windows реализуются как COM-объекты и следуют стандартным правилам COM для создания объектов, обнаружения интерфейса и уничтожения объектов. Many Windows components are implemented as COM objects and follow standard COM rules for object creation, interface discovery and object destruction. Использование объектов COM из классических приложений C++ относительно просто, но написание собственного COM-объекта является более сложным. Using COM objects from C++ desktop applications is relatively straightforward, but writing your own COM object is more advanced. Библиотека активных шаблонов (ATL) предоставляет макросы и вспомогательные функции, УПРОЩАЮЩИЕ разработку com. The Active Template Library (ATL) provides macros and helper functions that simplify COM development.

Приложение MFC — это классическое приложение Windows, которое использует Microsoft Foundation Classes для создания пользовательского интерфейса. An MFC application is a Windows desktop application that use the Microsoft Foundation Classes to create the user interface. Приложение MFC также может использовать компоненты COM, а также API CRT и библиотеки стандартных библиотек. An MFC application can also use COM components as well as CRT and Standard Library APIs. MFC предоставляет объектно-ориентированную оболочку с тонким C++ для циклов оконных сообщений и API Windows. MFC provides a thin C++ object-oriented wrapper over the window message loop and Windows APIs. MFC является выбором по умолчанию для приложений (особенно приложений корпоративного типа), которые имеют множество элементов управления пользовательского интерфейса или пользовательских элементов управления. MFC is the default choice for applications—especially enterprise-type applications—that have lots of user interface controls or custom user controls. MFC предоставляет удобные вспомогательные классы для управления окнами, сериализации, обработки текста, печати и современных элементов пользовательского интерфейса, таких как лента. MFC provides convenient helper classes for window management, serialization, text manipulation, printing, and modern user interface elements such as the ribbon. Для эффективной работы с MFC вы должны быть знакомы с Win32. To be effective with MFC you should be familiar with Win32.

Читайте также:  Аналог command для windows

Приложение или компонент C++/CLI использует расширения для синтаксиса C++ (как это разрешено стандартом C++), чтобы обеспечить взаимодействие между .NET и машинным кодом C + +. A C++/CLI application or component uses extensions to C++ syntax (as allowed by the C++ Standard) to enable interaction between .NET and native C++code. Приложение C++/CLI может содержать части, работающие в собственном коде, и части, которые выполняются в .NET Framework с доступом к библиотеке базовых классов .NET. A C++/CLI application can have parts that run natively and parts that run on the .NET Framework with access to the .NET Base Class Library. C++/CLI является предпочтительным вариантом при наличии машинного кода C++, который должен работать с кодом, написанным на C# или Visual Basic. C++/CLI is the preferred option when you have native C++ code that needs to work with code written in C# or Visual Basic. Он предназначен для использования в библиотеках DLL .NET, а не в коде пользовательского интерфейса. It is intended for use in .NET DLLs rather than in user interface code. Дополнительные сведения см. в статье Программирование .NET с использованием C++/CLI (Visual C++). For more information, see .NET Programming with C++/CLI (Visual C++).

Любое классическое приложение в C++ может использовать среду выполнения C (CRT), классы и функции стандартной библиотеки, COM-объекты и открытые функции Windows, которые вместе называются API Windows. Any desktop application in C++ can use C Runtime (CRT) and Standard Library classes and functions, COM objects, and the public Windows functions, which collectively are known as the Windows API. Общие сведения о классических приложениях Windows в C++ см. в статье Приступая к работе с Win32 и c++. For an introduction to Windows desktop applications in C++, see Get Started with Win32 and C++.

Создание классических приложений Windows с помощью Project Reunion 0.5 Build desktop Windows apps with Project Reunion 0.5

Project Reunion — это набор компонентов и инструментов для разработчиков, которые представляют новый этап развития платформы для разработки приложений Windows. Project Reunion is a set of new developer components and tools that represent the next evolution in the Windows app development platform. Project Reunion включает единый набор API и инструментов, которые могут согласованно использоваться любыми классическими приложениями в различных целевых версиях ОС Windows 10. Project Reunion provides a unified set of APIs and tools that can be used in a consistent way by any desktop app on a broad set of target Windows 10 OS versions.

Project Reunion не заменяет существующие платформы и среды классических приложений Windows, такие как .NET (включая Windows Forms и WPF) и C++/Win32. Project Reunion does not replace the existing desktop Windows app platforms and frameworks such as .NET (including Windows Forms and WPF) and C++/Win32. Напротив, решение дополняет такие платформы общим набором API и инструментов, которые упрощают работу разработчиков. Instead, it complements these existing platforms with a common set of APIs and tools that developers can rely on across these platforms. Дополнительные сведения см. в разделе о преимуществах Project Reunion. For more details, see Benefits of Project Reunion.

Project Reunion 0.5 можно использовать в классических упакованных приложениях MSIX (C#/.NET 5 или C++/Win32) в рабочих средах. Project Reunion 0.5 is supported for use in MSIX-packaged desktop apps (C#/.NET 5 or C++/Win32) in production environments. Упакованные классические приложения, которые используют Project Reunion 0.5, можно опубликовать в Microsoft Store. Packaged desktop apps that use Project Reunion 0.5 can be published to the Microsoft Store. Для приложений UWP предоставляется только предварительная версия Project Reunion 0.5. For UWP apps, Project Reunion 0.5 is available only as a preview. Этот выпуск не поддерживают приложения UWP, которые используются в рабочих средах. This release is not supported for UWP apps that are used in production environments.

Project Reunion — это кодовое название, которое может измениться в будущем выпуске. Project Reunion is a code name that may change in a future release.

Обзор Overview

Project Reunion предоставляет расширение для Visual Studio 2019, которое включает шаблоны проектов, настроенные для использования компонентов Project Reunion в новых проектах. Project Reunion provides an extension for Visual Studio 2019 that includes project templates configured to use Project Reunion components in new projects. Кроме того, библиотеки Project Reunion доступны через пакет NuGet, который можно установить в существующих проектах. The Project Reunion libraries are also available via a NuGet package that you can install in existing projects. Дополнительные сведения см. в статье Начало работы с Project Reunion. For more information, see Get started with Project Reunion.

Созданное приложение, которое использует Project Reunion, можно развернуть на других компьютерах. After you build an app that uses Project Reunion, you can deploy it to other computers. Дополнительные сведения см. в статье Развертывание приложений, которые используют Project Reunion. For more information, see Deploy apps that use Project Reunion.

Читайте также:  Protecting doors and windows

В состав Project Reunion 0.5 входят указанные ниже наборы API-интерфейсов и компонентов, которые можно использовать в приложениях. Project Reunion 0.5 includes the following sets of APIs and components you can use in your apps. Дополнительные сведения о будущих планах по реализации других компонентов в Project Reunion см. здесь. You can learn more about the future plans to bring other components into Project Reunion here.

Компонент Component Описание Description
Библиотека пользовательского интерфейса Windows 3 Windows UI Library 3 Библиотека пользовательского интерфейса Windows (WinUI) 3 — это новое поколение платформы пользовательского интерфейса Windows для приложений для Windows. Windows UI Library (WinUI) 3 is the next generation of the Windows user experience (UX) platform for Windows apps. Этот выпуск включает в себя шаблоны проектов Visual Studio, которые помогут начать разработку приложений с пользовательским интерфейсом на основе WinUI, а также пакет NuGet, содержащий библиотеки WinUI. This release includes Visual Studio project templates to help get started building apps with a WinUI-based user interface, and a NuGet package that contains the WinUI libraries.
Управление ресурсами с помощью MRT Core Manage resources with MRT Core MRT Core предоставляет API-интерфейсы для загрузки ресурсов, используемых вашим приложением, и управления ими. MRT Core provides APIs to load and manage resources used by your app. MRT Core — это оптимизированная версия современной системы управления ресурсами Windows. MRT Core is a streamlined version of the modern Windows Resource Management System.
Отрисовка текста с помощью DWriteCore Render text with DWriteCore DWriteCore предоставляет доступ ко всем текущим функциям DirectWrite для отрисовки текста, включая независимую от устройства систему разметки текста, аппаратное ускорение текста, многоформатный текст и расширенную поддержку языков. DWriteCore provides access to all current DirectWrite features for text rendering, including a device-independent text layout system, hardware-accelerated text, multi-format text, and wide language support.

Преимущества Project Reunion для разработчиков Windows Benefits of Project Reunion for Windows developers

Project Reunion предоставляет широкий спектр API Windows с реализациями, не зависящими от ОС и предоставляемыми разработчикам в виде пакетов NuGet. Project Reunion provides a broad set of Windows APIs with implementations that are decoupled from the OS and released to developers via NuGet packages. Project Reunion не заменяет собой Windows SDK. Project Reunion is not meant to replace the Windows SDK. Windows SDK будет работать так же, как и раньше, а многие основные компоненты Windows будут совершенствоваться с помощью API, которые предоставляются в выпусках ОС и Windows SDK. The Windows SDK will continue to work as is, and there are many core components of Windows that will continue to evolve via APIs that are delivered via OS and Windows SDK releases. Разработчикам рекомендуется внедрять Project Reunion в удобном для себя темпе. Developers are encouraged to adopt Project Reunion at their own pace.

Унифицированное использование API для разных платформ классических приложений Unified API surface across desktop app platforms

Разработчики, которые хотят создавать классические приложения для Windows, вынуждены выбирать между несколькими платформами и средами приложений. Developers who want to create desktop Windows apps must choose between several app platforms and frameworks. Хотя каждая из таких платформ предоставляет множество функций и API, которые могут использоваться приложениями, созданными с помощью других платформ, некоторые из них могут использовать только определенные платформы. Although each platform provides many features and APIs that can be used by apps that are built using other platforms, some features and APIs can only be used by specific platforms. Project Reunion объединяет возможности доступа к API Windows для всех классических приложений Windows 10. Project Reunion will unify access to Windows APIs for all desktop Windows 10 apps. Независимо от выбранной вами модели приложений вы получите доступ ко всему набору API Windows, который предоставляется в Project Reunion. No matter which app model you choose, you will have access to the same set of Windows APIs that are available in Project Reunion.

Мы планируем и дальше улучшать Project Reunion, устраняя и другие различия между разными моделями приложений. Over time, we plan to make further investments in Project Reunion that remove more distinctions between the different app models. Project Reunion будет включать как API WinRT, так и собственные API-интерфейсы языка C. Project Reunion will include both WinRT APIs and native C APIs.

Согласованная поддержка для разных версий Windows 10 Consistent support across Windows 10 versions

Так как API Windows меняются с каждой новой версией ОС, разработчикам нужно использовать такие техники, как адаптивный к версии код, чтобы учесть все различия в версиях, которые может использовать аудитория приложения. As the Windows APIs continue to evolve with new OS versions, developers must use techniques such as version adaptive code to account for all the differences in versions to reach their application audience. Это приводит к усложнению кода и работы разработчиков. This can add complexity to the code and the development experience.

API Project Reunion проектов будут работать в Windows 10 версии 1809 и всех последующих версиях Windows 10. Project Reunion APIs will work on Windows 10, version 1809, and all later versions of Windows 10. Это означает, что, пока ваши клиенты работают с Windows 10 версии 1809 или любой более поздней версии, вы можете использовать новые API и функции Project Reunion сразу после их выпуска без написания адаптивного кода. This means that as long as your customers are on Windows 10, version 1809, or any later version, you can use new Project Reunion APIs and features as soon as they are released, and without having to write version adaptive code.

Увеличенная частота выпусков Faster release cadence

Новые API и функции Windows ранее обычно были привязаны к выпускам ОС, которые выходили один или два раза в год. New Windows APIs and features have typically been tied to OS releases that happen on a once or twice a year release cadence. Project Reunion будет предоставлять обновления с повышенной частотой, позволяя вам быстрее получать доступ к инновационным возможностям на платформе разработки Windows по мере их появления. Project Reunion will ship updates on a faster cadence, enabling you to get earlier and more rapid access to innovations in the Windows development platform as soon as they are created.

Ограничения и известные проблемы Limitations and known issues

Для Project Reunion 0.5 характерны следующие ограничения и известные проблемы. The following limitations and known issues apply generally to Project Reunion 0.5.

  • Классические приложения (C#/.NET 5 или C++/Win32). Project Reunion 0.5 нельзя использовать в неупакованных классических приложениях (C#/.NET 5 или C++/Win32). Desktop apps (C#/.NET 5 or C++/Win32): Project Reunion 0.5 cannot be used in unpackaged desktop apps (C#/.NET 5 or C++/Win32). Этот выпуск поддерживают только классические упакованные приложения MSIX. This release is supported for use only in MSIX-packaged desktop apps.
  • Приложения UWP. Project Reunion 0.5 не поддерживают приложения UWP, которые используются в рабочих средах. UWP apps: Project Reunion 0.5 is not supported for UWP apps that are used in production environments. Чтобы использовать Project Reunion в приложениях UWP, требуется предварительная версия расширения Project Reunion 0.5, которую не поддерживают рабочие среды. To use Project Reunion in UWP apps, you must use a preview version of the Project Reunion 0.5 extension that is not supported for production environments. Дополнительные сведения об установке предварительной версии расширения см. в разделе Настройка среды разработки. For more information about installing the preview extension, see Set up your development environment.
  • Ограничения инструментов разработчика WinUI 3 также применяются к любому проекту, который использует Project Reunion 0.5. The WinUI 3 developer tool limitations also apply to any project that uses Project Reunion 0.5.

Для конкретных сценариев разработки характерны следующие ограничения и известные проблемы. The following limitations and known issues apply to specific developer scenarios.

Использование пакета NuGet для Project Reunion в существующих проектах Using the Project Reunion NuGet package in existing projects

  • Использование пакета NuGet для Project Reunion 0.5 поддерживается в проектах классических приложений (C#/.NET 5 и C++/WinRT) в рабочих средах. The Project Reunion 0.5 NuGet package is supported for use with desktop (C#/.NET 5 and C++/WinRT) projects in production environments. Он доступен в виде предварительной версии для разработки проектов UWP и не поддерживается в проектах UWP в рабочих средах. It is available as a developer preview for UWP projects, and is not supported for use with UWP projects in production environments.
  • Пакет NuGet для Project Reunion 0.5 (под названием Microsoft.ProjectReunion) содержит другие вложенные пакеты (в том числе Microsoft.ProjectReunion.Foundation и Microsoft.ProjectReunion.WinUI), которые содержат реализации для различных компонентов, включая WinUI, MRT Core и DWriteCore. The Project Reunion 0.5 NuGet package (named Microsoft.ProjectReunion) contains other sub-packages (including Microsoft.ProjectReunion.Foundation and Microsoft.ProjectReunion.WinUI) that contain the implementations for components including WinUI, MRT Core, and DWriteCore. Эти вложенные пакеты нельзя установить по отдельности, чтобы ссылаться только на определенные компоненты в вашем проекте. You cannot install these sub-packages individually to reference only certain components in your project. Необходимо установить пакет Microsoft.ProjectReunion, в который входят все компоненты. You must install the Microsoft.ProjectReunion package, which includes all of the components.
  • Если вы установите пакет NuGet для Project Reunion 0.5 в существующем проекте, вы сможете использовать в этом проекте только компоненты Project Reunion, не относящиеся к WinUI 3. If you install the Project Reunion 0.5 NuGet package to an existing project, you can only use non-WinUI 3 components that are part of Project Reunion in your project. Чтобы использовать WinUI 3, необходимо создать проект с помощью одного из шаблонов проектов WinUI 3, как описано в предыдущем разделе. To use WinUI 3, you must create a new project using one of the WinUI 3 project templates as described in the previous section.

Переход с модели ASTA на модель STA ASTA to STA threading model

Если вы переносите код из существующего приложения UWP в новый проект WinUI 3 C#/.NET 5 или C++/Win32, который использует Project Reunion, учитывайте, что новый проект использует модель однопотокового подразделения (STA) вместо модели однопотокового подразделения приложения (ASTA), используемой приложениями UWP. If you’re migrating code from an existing UWP app to a new C#/.NET 5 or C++/Win32 WinUI 3 project that uses Project Reunion, be aware that the new project uses the single-threaded apartment (STA) threading model instead of the Application STA (ASTA) threading model used by UWP apps. Если в коде не предполагается реентрабельное поведение потоковой модели ASTA, код может работать не так, как ожидалось. If your code assumes the non re-entrant behavior of the ASTA threading model, your code may not behave as expected.

Стратегия развития для разработчиков Developer roadmap

Последние планы в отношении Project Reunion см. здесь. For the latest Project Reunion plans, see our roadmap.

Отзывы и участие в разработке Give feedback and contribute

Project Reunion разрабатывается как проект с открытым кодом. We are building Project Reunion as an open source project. На нашей странице Github вы найдете дополнительную информацию о том, как мы создаем Project Reunion и как вы можете поучаствовать в разработке. We have a lot more information on our Github page about how we’re building Project Reunion, and how you can be a part of the development process. Ознакомьтесь с руководством для участников, если вы хотите задать вопрос, начать обсуждение или предложить функцию. Check out our contributor guide to ask questions, start discussions, or make feature proposals. Мы стремимся к тому, чтобы решение Project Reunion предоставляло разработчикам максимум преимуществ. We want to make sure that Project Reunion brings the biggest benefits to developers like you.

Читайте также:  Windows image viewer reg
Оцените статью