Мастер классический приложений 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.

Читайте также:  Твики интерфейса windows 10 что это

Приложение или компонент 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++.

Модернизация классических приложений Modernize your desktop apps

В Windows 10 и универсальной платформе Windows (UWP) предлагается много функций для реализации современных функций в классических приложениях. Windows 10 and the Universal Windows Platform (UWP) offer many features you can use to deliver a modern experience in your desktop apps. Большинство этих функций доступны в виде модульных компонентов, которые вы можете использовать в классических приложениях по своему усмотрению, не переписывая код приложения для другой платформы. Most of these features are available as modular components that you can adopt in your desktop apps at your own pace without having to rewrite your application for a different platform. Вы можете выбрать, какие компоненты Windows 10 и UWP нужно внедрить для улучшения существующих классических приложений. You can enhance your existing desktop apps by choosing which parts of Windows 10 and UWP to adopt.

В этой статье описаны функции Windows 10 и UWP, которые можно использовать в классических приложениях уже сегодня. This article describes the Windows 10 and UWP features that you can use in your desktop apps today. Инструкции по модернизации существующего приложения для использования многих из функций, описанных в этой статье, приведены в руководстве по модернизации приложения WPF. For a tutorial that demonstrates how to modernize an existing app to use many of the features described in this article, see the Modernize a WPF app tutorial.

Нужна помощь в миграции классических приложений в Windows 10? Do you need assistance migrating desktop apps to Windows 10? Служба Assure для классических приложений предоставляет прямую бесплатную поддержку для разработчиков при миграции приложений в Windows 10. The Desktop App Assure service provides direct, no-cost support to developers who are porting their apps to Windows 10. Эта программа доступна для всех независимых поставщиков программного обеспечения и соответствующих предприятий. This program is available to all ISVs and eligible enterprises. Дополнительные сведения о соответствии критериям, а также о самой программе см. здесь: /fasttrack/win-10-app-assure-assistance-offered. For more details on eligibility and about the program itself, visit /fasttrack/win-10-app-assure-assistance-offered. Чтобы начать работу прямо сейчас, отправьте запрос. To get started now, submit your request.

Библиотека пользовательского интерфейса Windows Windows UI Library

Библиотека пользовательского интерфейса Windows — это набор пакетов NuGet, предоставляющих элементы управления и прочие элементы пользовательского интерфейса для приложений для Windows 10. The Windows UI Library is a set of NuGet packages that provide controls and other user interface elements for Windows 10 apps. Библиотека WinUI разрабатывалась как набор средств. Она предоставляла новые и обновленные версии элементов управления WinRT XAML для приложений UWP, предназначенных для более ранних версий Windows 10. WinUI started as a toolkit that provided new and updated versions of WinRT XAML controls for UWP apps that target down-level versions of Windows 10. Теперь область действия WinUI расширилась, и решение является современной нативной платформой пользовательского интерфейса для приложений Windows 10 в UWP, .NET и нативных приложений Win32. WinUI has grown in scope, and is now the modern native user interface (UI) platform for Windows 10 apps across UWP, .NET, and native Win32.

WinUI можно использовать в классических приложениях следующим образом: You can use WinUI in the following ways in desktop apps:

  • Вы можете обновить существующие приложения WPF, Windows Forms и C++/Win32 с использованием XAML Islands, чтобы размещать элементы управления WinUI 2.x. You can update existing WPF, Windows Forms, and C++/Win32 apps with XAML Islands and host WinUI 2.x controls.
  • Используйте WinUI 3 для создания управляемых приложений C#/.NET 5 и собственных классических приложений C++/Win32 с помощью пользовательского интерфейса, который полностью основан на WinUI. Use WinUI 3 to create managed C#/.NET 5 and native C++/Win32 desktop apps with an entirely WinUI-based user interface.
Читайте также:  Таблица совместимости mac os x с железом

Пакеты MSIX MSIX packages

MSIX — это современный универсальный формат пакетов для упаковки любых приложений для Windows, включая приложения UWP, WPF, Windows Forms и Win32. MSIX is a modern Windows app package format that provides a universal packaging experience for all Windows apps, including UWP, WPF, Windows Forms and Win32 apps. Этот современный надежный процесс упаковки сочетает в себе преимущества технологий установки MSI, APPX, App-V и ClickOnce. MSIX brings together the best aspects of MSI, .appx, App-V and ClickOnce installation technologies to provide a modern and reliable packaging experience.

Упаковав классические приложения для Windows в MSIX-пакеты, вы получаете доступ к надежным возможностям установки и обновления, управляемой модели безопасности с гибкой системой возможностей, поддержке Microsoft Store, возможностям управления предприятием и многим пользовательским моделям распространения. Packaging your desktop Windows apps in MSIX packages gets you access to a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models.

Дополнительные сведения см. в статье об упаковке классических приложений в документации по MSIX. For more information, see Package desktop applications in the MSIX documentation.

.NET Core 3 .NET Core 3

.NET Core 3 — это последний основной выпуск .NET Core. .NET Core 3 is the latest major release of .NET Core. Основным преимуществом этого выпуска является поддержка классических приложений для Windows, включая приложения Windows Forms и WPF. The highlight of this release is support for Windows desktop apps, including Windows Forms and WPF apps. Используя .NET Core 3, вы можете запускать новые и существующие классические приложения для Windows и пользоваться всеми преимуществами этой платформы. You can run new and existing Windows desktop apps on .NET Core 3 and enjoy all the benefits that .NET Core has to offer. В приложениях для Windows Forms и WPF, предназначенных для .NET Core 3, также можно использовать элементы управления WinRT XAML, доступные в XAML Islands. WinRT XAML controls that are hosted in XAML Islands can also be used in Windows Forms and WPF apps that target .NET Core 3.

Дополнительные сведения см. в статье Новые возможности .NET Core 3.0. For more information, see What’s new in .NET Core 3.0.

APII-интерфейсы среды выполнения Windows Windows Runtime APIs

Для интеграции современных возможностей, которые могут заинтересовать пользователей Windows 10, большинство API-интерфейсов среды выполнения Windows можно вызывать напрямую из классических приложений WPF, Windows Forms или C++ Win32. You can call many Windows Runtime APIs directly in your WPF, Windows Forms, or C++ Win32 desktop app to integrate modern experiences that light up for Windows 10 users. Например, вы можете вызывать API-интерфейсы среды выполнения Windows, чтобы добавлять всплывающие уведомления в приложение. For example, you can call Windows Runtime APIs to add toast notifications to your desktop app.

Размещение элементов управления WinRT XAML (XAML Islands) Host WinRT XAML controls (XAML Islands)

Начиная с Windows 10 версии 1903, можно добавить элемент управления XAML платформы UWP в любой элемент пользовательского интерфейса приложения WPF, Windows Forms или C++ Win32, который связан с дескриптором окна (HWND). Starting with the Windows 10, version 1903, you can add UWP XAML controls directly to any UI element in a WPF, Windows Forms, or C++ Win32 app that is associated with a window handle (HWND). Это означает, что новые функции UWP, например рукописный ввод Windows, можно объединить с элементами управления, поддерживающими систему Fluent Design, в окнах и других средствах для отображения в классических приложениях. This means that you can fully integrate the latest UWP features such as Windows Ink and controls that support the Fluent Design System into windows and other display surfaces in your desktop apps. Такой сценарий разработки иногда называют XAML Islands. This developer scenario is sometimes called XAML islands.

Использование визуального уровня в классических приложениях Use the Visual layer in desktop apps

Теперь API-интерфейсы среды выполнения Windows можно использовать и в классических приложениях, созданных не на платформе UWP, чтобы улучшить внешний вид и функции этих приложений (WPF, Windows Forms и C++ Win32), а также воспользоваться последними функциями пользовательского интерфейса Windows 10, которые доступны только через UWP. You can now use Windows Runtime APIs in non-UWP desktop apps to enhance the look, feel, and functionality of your WPF, Windows Forms, and C++ Win32 apps, and take advantage of the latest Windows 10 UI features that are only available via UWP. Это удобно, когда нужно создать пользовательские функции, которые невозможно реализовать с помощью встроенных элементов управления WinRT XAML, размещаемых с использованием XAML Islands. This is useful when you need to create custom experiences that go beyond the built-in WinRT XAML controls you can host by using XAML Islands.

Дополнительные сведения см. в статье Using the Visual layer in desktop apps (Использование визуального уровня в классических приложениях). For more information, see Modernize your desktop app using the Visual layer.

Дополнительные функции, доступные приложениям с идентификатором пакета Additional features available to apps with package identity

Некоторые современные возможности Windows 10 доступны только в классических приложениях с идентификатором пакета. Some modern Windows 10 experiences are available only in desktop apps that have package identity. Эти функции включают в себя определенные интерфейсы API среды выполнения Windows, расширения пакетов и компоненты UWP. These features include certain Windows Runtime APIs, package extensions, and UWP components. Дополнительные сведения см. в статье Features that require package identity (Функции, которым требуется идентификатор пакета). For more information, see Features that require package identity.

Существует несколько способов предоставить идентификатор классическому приложению. There are several ways to grant identity to a desktop app:

  • Упакуйте его в пакет MSIX. Package it in an MSIX package. MSIX — это современный универсальный формат пакетов для упаковки любых приложений для Windows, WPF, Windows Forms и Win32. MSIX is a modern app package format that provides a universal packaging experience for all Windows apps, WPF, Windows Forms and Win32 apps. Он обеспечивает надежные возможности установки и обновления, управляемую модель безопасности с гибкой системой возможностей, поддержку Microsoft Store, возможности управления предприятием и множество пользовательских моделей распространения. It provides a robust installation and updating experience, a managed security model with a flexible capability system, support for the Microsoft Store, enterprise management, and many custom distribution models. Дополнительные сведения см. в статье об упаковке классических приложений в документации по MSIX. For more information, see Package desktop applications in the MSIX documentation.
  • Если вам не удается внедрить упаковку MSIX для развертывания своего классического приложения, в Windows 10 версии 2004 и выше вы сможете предоставить идентификатор пакета, создав разреженный пакет MSIX, который содержит только манифест пакета. If you are unable to adopt MSIX packaging for deploying your desktop app, starting in Windows 10, version 2004, you can grant package identity by creating a sparse MSIX package that contains only a package manifest. Дополнительные сведения см. в разделе Предоставление идентификаторов для неупакованных классических приложений. For more information, see Grant identity to non-packaged desktop apps.
Читайте также:  Изучить линукс с нуля самостоятельно

Элементы управления WinRT XAML, оптимизированные для классических приложений WinRT XAML controls optimized for desktop apps

Приведенные ниже новые и обновленные элементы управления WinRT XAML предоставляют средства рабочего стола как часть системы Fluent Design. Эти возможности можно применять независимо от того, создаете ли вы приложение UWP, предназначенное только для компьютеров, или хотите использовать элементы управления WinRT XAML в классическом приложении WPF, Windows Forms или C++ Win32. Whether you’re building a UWP app that exclusively targets the desktop device family or you want to use WinRT XAML controls in a WPF, Windows Forms, or C++ Win32 desktop app, the following new and updated WinRT XAML controls are designed to offer desktop-optimized experiences with the Fluent Design System. Эти элементы управления появились в Windows 10 версии 1809, (обновление за октябрь 2018 г. или версия 10.0.17763). These controls were introduced in Windows 10, version 1809 (the October 2018 Update, or version 10.0.17763).

Элемент Control Описание Description
MenuBar MenuBar Обеспечивает простой и быстрый способ предоставления набора команд для приложений, которым могут понадобиться дополнительные функции упорядочения или группирования, недоступные в CommandBar. Provides a quick and simple way to expose a set of commands for apps that might need more organization or grouping than a CommandBar allows.
DropDownButton DropDownButton Отображение шеврона в качестве визуального индикатора, который свидетельствует о наличии вложенного всплывающего меню с дополнительными параметрами. Shows a chevron as a visual indicator that it has an attached flyout that contains more options.
SplitButton SplitButton Кнопка, состоящая из двух частей, которые можно использовать по-отдельности. Provides a button has two parts that can be invoked separately. Одна часть представляет собой стандартную кнопку, которая вызывает немедленное действие. One part behaves like a standard button and invokes an immediate action. Другая часть позволяет вызывать всплывающий элемент с дополнительными параметрами, которые пользователь может выбрать. The other part invokes a flyout that contains additional options that the user can choose from.
ToggleSplitButton ToggleSplitButton Кнопка, состоящая из двух частей, которые можно использовать по-отдельности. Provides a button has two parts that can be invoked separately. Одна часть выполняет функцию переключателя. One part behaves like a toggle button that can be on or off. Другая часть позволяет вызывать всплывающий элемент с дополнительными параметрами, которые пользователь может выбрать. The other part invokes a flyout that contains additional options that the user can choose from.
CommandBarFlyout CommandBarFlyout Позволяет отобразить стандартные задачи пользователя в контексте элемента на холсте пользовательского интерфейса. Lets you show common user tasks in the context of an item on your UI canvas.
ComboBox ComboBox Теперь поле со списком можно сделать редактируемым, чтобы пользователь мог ввести значения, которые не указаны в элементе управления. You can now make a combo box editable so the user can enter values that aren’t listed in the control.
TreeView TreeView Теперь можно настроить представление в виде дерева для реализации привязки данных, шаблонов элементов и перетаскивания элементов. You can now configure a tree view to enable data binding, item templates, and drag and drop.
DataGridView DataGridView Позволяет гибко отображать коллекцию данных в строках и столбцах. Provides a flexible way to display a collection of data in rows and columns. Этот элемент управления доступен в наборе средств сообщества Windows. This control is available in the Windows Community Toolkit.

Другие технологии для современных классических приложений Other technologies for modern desktop apps

Microsoft Graph Microsoft Graph

Microsoft Graph — это коллекция API, которые можно использовать для создания приложений для организаций и клиентов, взаимодействующих с данными миллионов пользователей. Microsoft Graph is a collection of APIs you can use to build apps for organizations and consumers that interact with the data of millions of users. Microsoft Graph предоставляет REST API и клиентские библиотеки для доступа к данным в следующих службах: Microsoft Graph exposes REST APIs and client libraries to access data on the following:

  • Azure Active Directory Azure Active Directory
  • Приложения Microsoft 365 Office: SharePoint, OneDrive, Outlook или Exchange, Microsoft Teams, OneNote, Планировщик и Excel; Microsoft 365 Office apps: SharePoint, OneDrive, Outlook/Exchange, Microsoft Teams, OneNote, Planner, and Excel
  • службы Enterprise Mobility + Security: Identity Manager, Intune, Advanced Threat Analytics и Advanced Threat Protection; Enterprise Mobility and Security services: Identity Manager, Intune, Advanced Threat Analytics, and Advanced Threat Protection.
  • службы Windows 10: действия и устройства. Windows 10 services: activities and devices

Дополнительные сведения см. в документации по Microsoft Graph. For more information, see the Microsoft Graph docs.

Адаптивные карточки Adaptive Cards

Адаптивные карточки — это открытая платформа для кроссплатформенных приложений, которая позволяет привычным и согласованным способом обмениваться между устройствами и платформами содержимым пользовательского интерфейса на основе карточек. Adaptive Cards is an open, cross-platform framework that you can use to exchange card-based UI content in a common and consistent way across devices and platforms.

Дополнительные сведения см. в документации по адаптивным карточкам. For more information, see the Adaptive Cards docs.

Оцените статью