Winrt api windows 10

Содержание
  1. Введение в C++/WinRT Introduction to C++/WinRT
  2. Языковые проекции Language projections
  3. Языковая проекция C++/WinRT в содержимом справочных материалов по API среды выполнения Windows The C++/WinRT language projection in the Windows Runtime API reference content
  4. Поддержка Visual Studio для C++/WinRT, XAML, расширения VSIX и пакета NuGet Visual Studio support for C++/WinRT, XAML, the VSIX extension, and the NuGet package
  5. Пустое приложение (C++/WinRT) Blank App (C++/WinRT)
  6. Приложение основных компонентов (C++/WinRT) Core App (C++/WinRT)
  7. Консольное приложение для Windows (C++/WinRT) Windows Console Application (C++/WinRT)
  8. Классическое приложение для Windows (C++/WinRT) Windows Desktop Application (C++/WinRT)
  9. Компонент среды выполнения Windows (C++/WinRT) Windows Runtime Component (C++/WinRT)
  10. Более ранние версии расширения VSIX Earlier versions of the VSIX extension
  11. Созданные с версией ранее 1.0.181002.2 Created earlier than 1.0.181002.2
  12. Созданные с версиями (или обновленные до) 1.0.181002.2–1.0.190128.3 Created with (or upgraded to) between 1.0.181002.2 and 1.0.190128.3
  13. Недопустимые конфигурации обновления Invalid upgrade configurations
  14. Поддержка пакетов SDK для C++/WinRT SDK support for C++/WinRT
  15. Пользовательские типы в проекции C++/WinRT Custom types in the C++/WinRT projection

Введение в C++/WinRT Introduction to C++/WinRT

C++/WinRT — это полностью стандартная проекция языка C++17 для API среды выполнения Windows (WinRT), реализованная как библиотека на основе файлов заголовков и предназначенная для предоставления вам первоклассного доступа к современным интерфейсам API Windows. C++/WinRT is an entirely standard modern C++17 language projection for Windows Runtime (WinRT) APIs, implemented as a header-file-based library, and designed to provide you with first-class access to the modern Windows API. С помощью C++/WinRT можно создавать и использовать интерфейсы API среды выполнения Windows, используя любой совместимый со стандартами компилятор C++17. With C++/WinRT, you can author and consume Windows Runtime APIs using any standards-compliant C++17 compiler. В пакет Windows SDK входит среда C++/WinRT, которая впервые появилась в версии 10.0.17134.0 (Windows 10, версия 1803). The Windows SDK includes C++/WinRT; it was introduced in version 10.0.17134.0 (Windows 10, version 1803).

C++/WinRT — это рекомендуемая корпорацией Майкрософт замена для проекции языка C++/CX и библиотеки шаблонов C++ для среды выполнения Windows (WRL). C++/WinRT is Microsoft’s recommended replacement for the C++/CX language projection, and the Windows Runtime C++ Template Library (WRL). Полный список статей о C++/WinRT содержит информацию о взаимодействии с C++/CX и WRL и о переносе из них. The full list of topics about C++/WinRT includes info about both interoperating with, and porting from, C++/CX and WRL.

Некоторые наиболее важные аспекты C++/WinRT, которые следует учитывать, описаны в разделах Поддержка пакетов SDK для C++/WinRT и Поддержка Visual Studio для C++/WinRT, XAML, расширения VSIX и пакета NuGet. Some of the most important pieces of C++/WinRT to be aware of are described in the sections SDK support for C++/WinRT and Visual Studio support for C++/WinRT, XAML, the VSIX extension, and the NuGet package.

Языковые проекции Language projections

Среда выполнения Windows основывается на API Component Object Model (COM) и предусматривает доступ к ней через языковые проекции. The Windows Runtime is based on Component Object Model (COM) APIs, and it’s designed to be accessed through language projections. Использование проекции позволяет скрывать подробности COM и обеспечить более естественный подход к программированию на используемом языке. A projection hides the COM details, and provides a more natural programming experience for a given language.

Языковая проекция C++/WinRT в содержимом справочных материалов по API среды выполнения Windows The C++/WinRT language projection in the Windows Runtime API reference content

При просмотре API среды выполнения Windows щелкните вверху справа поле со списком Язык и выберите пункт C++/WinRT, чтобы просмотреть синтаксические блоки API в том виде, в котором они отражаются в языковой проекции C++/WinRT. When you’re browsing Windows Runtime APIs, click the Language combo box in the upper right, and select C++/WinRT to view API syntax blocks as they appear in the C++/WinRT language projection.

Поддержка Visual Studio для C++/WinRT, XAML, расширения VSIX и пакета NuGet Visual Studio support for C++/WinRT, XAML, the VSIX extension, and the NuGet package

Для поддержки Visual Studio вам потребуется Visual Studio 2019 или Visual Studio 2017 (по крайней мере версия 15.6; рекомендуется версия не ниже 15.7). For Visual Studio support, you’ll need Visual Studio 2019 or Visual Studio 2017 (at least version 15.6; we recommend at least 15.7). С помощью Visual Studio Installer установите рабочую нагрузку Разработка приложений для универсальной платформы Windows. From within the Visual Studio Installer, install the Universal Windows Platform development workload. В разделе Сведения об установке > Разработка приложений для универсальной платформы Windows выберите параметры инструментов универсальной платформы Windows для C++ (версии 14x) , если вы еще этого не сделали. In Installation Details > Universal Windows Platform development, check the C++ (v14x) Universal Windows Platform tools option(s), if you haven’t already done so. Кроме того, в разделе Windows Параметры > Обновления&Безопасность > Для разработчиков выберите параметр Режим разработчика вместо параметра Неопубликованные приложения. And, in Windows Settings > Update & Security > For developers, choose the Developer mode option rather than the Sideload apps option.

Хотя мы рекомендуем выполнять разработку с последними версиями Visual Studio и Windows SDK, если вы используете версию C++/WinRT, которая поставляется вместе с версией Windows SDK, предшествующей версии 10.0.17763.0 (Windows 10 версии 1809), для упомянутых выше заголовков пространств имен Windows в проекте вам потребуется минимальная целевая версия Windows SDK 10.0.17134.0 (Windows 10 версии 1803). While we recommend that you develop with the latest versions of Visual Studio and the Windows SDK, if you’re using a version of C++/WinRT that shipped with the Windows SDK prior to 10.0.17763.0 (Windows 10, version 1809), then, to use the the Windows namespaces headers mentioned above, you’ll need a minimum Windows SDK target version in your project of 10.0.17134.0 (Windows 10, version 1803).

Вам нужно будет скачать и установить последнюю версию расширения C++/WinRT для Visual Studio (VSIX) из Visual Studio Marketplace. You’ll want to download and install the latest version of the C++/WinRT Visual Studio Extension (VSIX) from the Visual Studio Marketplace.

  • Расширение VSIX предоставляет шаблоны проектов и элементов C++/WinRT в Visual Studio, чтобы вы могли начать разработку с C++/WinRT. The VSIX extension gives you C++/WinRT project and item templates in Visual Studio, so that you can get started with C++/WinRT development.
  • Кроме того, расширение также поддерживает визуализацию встроенной отладки Visual Studio (natvis) проецированных типов C++/WinRT, что обеспечивает возможности, аналогичные отладке на C#. In addition, it gives you Visual Studio native debug visualization (natvis) of C++/WinRT projected types; providing an experience similar to C# debugging. Natvis автоматически используется для сборок отладки. Natvis is automatic for debug builds. Вы можете выбрать сборки выпуска, указав символ WINRT_NATVIS. You can opt into it release builds by defining the symbol WINRT_NATVIS.

Шаблоны проектов Visual Studio для C++/WinRT описаны в следующих разделах. The Visual Studio project templates for C++/WinRT are described in the sections below. Когда вы создаете проект C++/WinRT с установленной последней версией расширения VSIX, новый проект C++/WinRT автоматически устанавливает пакет NuGet Microsoft.Windows.CppWinRT. When you create a new C++/WinRT project with the latest version of the VSIX extension installed, the new C++/WinRT project automatically installs the Microsoft.Windows.CppWinRT NuGet package. Пакет NuGet Microsoft.Windows.CppWinRT обеспечивает поддержку сборки с C++/WinRT (свойства и цели MSBuild), делая проект переносимым между компьютером для разработки и агентом сборки (на котором установлен только пакет NuGet, а не расширение VSIX). The Microsoft.Windows.CppWinRT NuGet package provides C++/WinRT build support (MSBuild properties and targets), making your project portable between a development machine and a build agent (on which only the NuGet package, and not the VSIX extension, is installed).

Читайте также:  Подключено с ограниченным доступом windows

Кроме того, вы можете преобразовать существующий проект, вручную установив пакет NuGet Microsoft.Windows.CppWinRT. Alternatively, you can convert an existing project by manually installing the Microsoft.Windows.CppWinRT NuGet package. После установки (или обновления до) последней версии расширения VSIX откройте существующий проект в Visual Studio и щелкните Проект > Управление пакетами NuGet… > Обзор, введите или вставьте Microsoft.Windows.CppWinRT в поле поиска, выберите элемент в результатах поиска, а затем нажмите кнопку Установить, чтобы установить пакет для этого проекта. After installing (or updating to) the latest version of the VSIX extension, open the existing project in Visual Studio, click Project > Manage NuGet Packages. > Browse, type or paste Microsoft.Windows.CppWinRT in the search box, select the item in search results, and then click Install to install the package for that project. После добавления этого пакета вы получите поддержку MSBuild C++/WinRT для проекта, включая вызов инструмента cppwinrt.exe . Once you’ve added the package, you’ll get C++/WinRT MSBuild support for the project, including invoking the cppwinrt.exe tool.

Если у вас есть проекты, которые были созданы (или обновлены для работы) с версией расширения VSIX ниже, чем 1.0.190128.4, ознакомьтесь с разделом Более ранние версии расширения VSIX. If you have projects that were created with (or upgraded to work with) a version of the VSIX extension earlier than 1.0.190128.4, then see Earlier versions of the VSIX extension. Этот раздел содержит важную информацию о конфигурации проектов, о которой вам необходимо знать, чтобы обновить их для использования последней версии расширения VSIX. That section contains important info about the configuration of your projects, which you’ll need to know to upgrade them to use the latest version of the VSIX extension.

  • Так как C++/WinRT использует компоненты стандарта C++17, пакет NuGet устанавливает для свойства проекта C/C++ >Язык >Стандарт языка C++ >Стандарт ISO C++17 (/std:c++17) в Visual Studio. Because C++/WinRT uses features from the C++17 standard, the NuGet package sets project property C/C++ >Language >C++ Language Standard >ISO C++17 Standard (/std:c++17) in Visual Studio.
  • Он также добавляет параметр компилятора /bigobj. It also adds the /bigobj compiler option.
  • Кроме того, с помощью пакета добавляется параметр компилятора /await, чтобы включить co_await , It adds the /await compiler option in order to enable co_await .
  • и компилятору XAML дается инструкция выдавать Codegen C++/WinRT. It instructs the XAML compiler to emit C++/WinRT codegen.
  • Вы также можете установить Режим совместимости: Да (/permissive-) , что дополнительно обеспечит соответствие стандартам вашего кода. You might also want to set Conformance mode: Yes (/permissive-), which further constrains your code to be standards-compliant.
  • Еще одно свойство, о котором следует знать, — это C/C++ >Общие >Обрабатывать предупреждения как ошибки. Another project property to be aware of is C/C++ >General >Treat Warnings As Errors. Задайте для него значение Да (/WX) или Нет (/WX-) по вашему желанию. Set this to Yes(/WX) or No (/WX-) to taste. Иногда исходные файлы, созданные инструментом cppwinrt.exe , выдают предупреждения до тех пор, пока вы не добавите в них свою реализацию. Sometimes, source files generated by the cppwinrt.exe tool generate warnings until you add your implementation to them.

Если ваша система настроена, как описано выше, вы сможете создавать или открывать проект C++/WinRT в Visual Studio и развертывать его. With your system set up as described above, you’ll be able to create and build, or open, a C++/WinRT project in Visual Studio, and deploy it.

Начиная с версии 2.0, в состав пакета NuGet Microsoft.Windows.CppWinRT входит инструмент cppwinrt.exe . As of version 2.0, the Microsoft.Windows.CppWinRT NuGet package includes the cppwinrt.exe tool. Вы можете указывать на инструмент cppwinrt.exe в файле метаданных среды выполнения Windows ( .winmd ) для создания стандартной библиотеки C++ на основе файлов заголовков, которая проецирует API, описанные в метаданных, для использования в коде C++/WinRT. You can point the cppwinrt.exe tool at a Windows Runtime metadata ( .winmd ) file to generate a header-file-based standard C++ library that projects the APIs described in the metadata for consumption from C++/WinRT code. Файлы метаданных среды выполнения Windows ( .winmd ) предоставляют канонический способ описания поверхности API среды выполнения Windows. Windows Runtime metadata ( .winmd ) files provide a canonical way of describing a Windows Runtime API surface. Если cppwinrt.exe указывает на метаданные, вы можете создать библиотеку для использования с любым классом среды выполнения, реализованным в стороннем компоненте среды выполнения Windows или в вашем приложении. By pointing cppwinrt.exe at metadata, you can generate a library for use with any runtime class implemented in a second- or third-party Windows Runtime component, or implemented in your own application. Дополнительные сведения см. в статье Использование API-интерфейсов с помощью C++/WinRT. For more info, see Consume APIs with C++/WinRT.

С помощью C++/WinRT также можно реализовать собственные классы среды выполнения, используя стандартный язык C++, не прибегая к программированию в стиле COM. With C++/WinRT, you can also implement your own runtime classes using standard C++, without resorting to COM-style programming. Для класса среды выполнения необходимо просто описать типы в IDL-файле, после чего средства midl.exe и cppwinrt.exe автоматически создадут файлы стандартного исходного кода. For a runtime class, you just describe your types in an IDL file, and midl.exe and cppwinrt.exe generate your implementation boilerplate source code files for you. Можно также реализовать только интерфейсы на основе базового класса C++/WinRT. You can alternatively just implement interfaces by deriving from a C++/WinRT base class. Дополнительные сведения см. в статье Создание API-интерфейсов в C++/WinRT. For more info, see Author APIs with C++/WinRT.

Список параметров настройки для средства cppwinrt.exe , заданных в разделе свойств проекта, см. в файле сведений пакета NuGet Microsoft.Windows.CppWinRT. For a list of customization options for the cppwinrt.exe tool, set via project properties, see the Microsoft.Windows.CppWinRT NuGet package readme.

Вы можете определить проект, который использует поддержку MSBuild C++/WinRT, по наличию пакета NuGet Microsoft.Windows.CppWinRT, установленного в проекте. You can identify a project that uses the C++/WinRT MSBuild support by the presence of the Microsoft.Windows.CppWinRT NuGet package installed within the project.

Далее приведены шаблоны проектов Visual Studio, предоставляемые расширением VSIX. Here are the Visual Studio project templates provided by the VSIX extension.

Пустое приложение (C++/WinRT) Blank App (C++/WinRT)

Шаблон проекта для приложения универсальной платформы Windows (UWP), которое имеет пользовательский интерфейс XAML. A project template for a Universal Windows Platform (UWP) app that has a XAML user-interface.

Visual Studio предоставляет поддержку компилятора XAML для создания заглушек реализаций и заголовков из IDL-файла ( .idl ), прилагаемого к каждому файлу разметки XAML. Visual Studio provides XAML compiler support to generate implementation and header stubs from the Interface Definition Language (IDL) ( .idl ) file that sits behind each XAML markup file. В IDL-файле определите все классы локальной среды выполнения, на которые нужно сослаться на XAML-страницах вашего приложения, а затем один раз выполните сборку проекта для создания шаблонов реализации в Generated Files и определений типа заглушки в Generated Files\sources . In an IDL file, define any local runtime classes that you want to reference in your app’s XAML pages, and then build the project once to generate implementation templates in Generated Files , and stub type definitions in Generated Files\sources . Затем используйте определения типа заглушки для справки при реализации классов локальной среды выполнения. Then use those stub type definitions for reference to implement your local runtime classes. Также см. раздел о разделении классов среды выполнения на файлы Midl (.idl). See Factoring runtime classes into Midl files (.idl).

Читайте также:  The windows server catalog

Поддержка области конструирования XAML в Visual Studio 2019 для C++/WinRT соответствует C#. The XAML design surface support in Visual Studio 2019 for C++/WinRT is close to parity with C#. В Visual Studio 2019 вы можете использовать вкладку События окна Свойства, чтобы добавить обработчики событий в проект C++/WinRT. In Visual Studio 2019, you can use the Events tab of the Properties window to add event handlers within a C++/WinRT project. Вы также можете вручную добавить обработчики событий в код. Дополнительные сведения см. в статье Обработка событий с помощью делегатов в C++/WinRT. You can also add event handlers to your code manually—see Handle events by using delegates in C++/WinRT for more info.

Приложение основных компонентов (C++/WinRT) Core App (C++/WinRT)

Шаблон проекта для приложения универсальной платформы Windows (UWP), которое не использует XAML. A project template for a Universal Windows Platform (UWP) app that doesn’t use XAML.

Вместо этого оно использует заголовок пространства имен C++/WinRT (Windows) для пространства имен Windows.ApplicationModel.Core. Instead, it uses the C++/WinRT Windows namespace header for the Windows.ApplicationModel.Core namespace. После выполнения сборки и запуска щелкните пустое пространство для добавления цветного квадрата, а затем щелкните цветной квадрат, чтобы перетащить его. After building and running, click on an empty space to add a colored square; then click on a colored square to drag it.

Консольное приложение для Windows (C++/WinRT) Windows Console Application (C++/WinRT)

Шаблон проекта для клиентского приложения C++/WinRT для Windows Desktop с пользовательским интерфейсом консоли. A project template for a C++/WinRT client application for Windows Desktop, with a console user-interface.

Классическое приложение для Windows (C++/WinRT) Windows Desktop Application (C++/WinRT)

Шаблон проекта для клиентского приложения C++/WinRT для Windows Desktop, который отображает Windows.Foundation.Uri среды выполнения Windows внутри MessageBox Win32. A project template for a C++/WinRT client application for Windows Desktop, which displays a Windows Runtime Windows.Foundation.Uri inside a Win32 MessageBox.

Компонент среды выполнения Windows (C++/WinRT) Windows Runtime Component (C++/WinRT)

Шаблон проекта для компонента, как правило, для использования из универсальной платформы Windows (UWP). A project template for a component; typically for consumption from a Universal Windows Platform (UWP).

Этот шаблон демонстрирует цепочку инструментов midl.exe > cppwinrt.exe , где метаданные среды выполнения Windows ( .winmd ) создаются из IDL, а затем из метаданных среды выполнения Windows создаются заглушки реализаций и заголовков. This template demonstrates the midl.exe > cppwinrt.exe toolchain, where Windows Runtime metadata ( .winmd ) is generated from IDL, and then implementation and header stubs are generated from the Windows Runtime metadata.

В IDL-файле определите классы среды выполнения в вашем компоненте, их интерфейс по умолчанию и другие интерфейсы, которые они реализуют. In an IDL file, define the runtime classes in your component, their default interface, and any other interfaces they implement. Единожды выполните сборку проекта для создания шаблонов реализаций module.g.cpp и module.h.cpp в Generated Files и определений типа заглушек в Generated Files\sources . Build the project once to generate module.g.cpp , module.h.cpp , implementation templates in Generated Files , and stub type definitions in Generated Files\sources . Затем используйте определения типов заглушек для справки при реализации классов среды выполнения в вашем компоненте. Then use those the stub type definitions for reference to implement the runtime classes in your component. Также см. раздел о разделении классов среды выполнения на файлы Midl (.idl). See Factoring runtime classes into Midl files (.idl).

Объедините в пакет созданный двоичный файл компонента среды выполнения Windows и его файл с расширением .winmd с приложением UWP, которое их использует. Bundle the built Windows Runtime component binary and its .winmd with the UWP app consuming them.

Более ранние версии расширения VSIX Earlier versions of the VSIX extension

Мы рекомендуем установить (или обновить до) последнюю версию расширения VSIX. We recommend that you install (or update to) the latest version of the VSIX extension. По умолчанию для него настроено самостоятельное обновление. It is configured to update itself by default. Если вы это сделаете при наличии проектов, созданных с версией расширения VSIX ранее 1.0.190128.4, следует ознакомиться с этим разделом, содержащим важную информацию об обновлении этих проектов для работы с новой версией. If you do that, and you have projects that were created with a version of the VSIX extension earlier than 1.0.190128.4, then this section contains important info about upgrading those projects to work with the new version. Если вы не выполните обновление, вам все равно будет полезно ознакомиться со сведениями в этом разделе. If you don’t update, then you’ll still find the info in this section useful.

С точки зрения поддерживаемых пакетов Windows SDK и версий Visual Studio, а также конфигурации Visual Studio информация в приведенном выше разделе Поддержка Visual Studio для C++/WinRT, XAML, расширения VSIX и пакета NuGet относится к более ранним версиям расширения VSIX. In terms of supported Windows SDK and Visual Studio versions, and Visual Studio configuration, the info in the Visual Studio support for C++/WinRT, XAML, the VSIX extension, and the NuGet package section above applies to earlier versions of the VSIX extension. Ниже описываются важные различия в поведении и конфигурации проектов, созданных (или обновленных для работы) с более ранними версиями. The info below describes important differences regarding the behavior and configuration of projects created with (or upgraded to work with) earlier versions.

Созданные с версией ранее 1.0.181002.2 Created earlier than 1.0.181002.2

Если ваш проект был создан с более ранней версией расширения VSIX, чем 1.0.181002.2, в эту версию расширения VSIX была встроена поддержка сборки C++/WinRT. If your project was created with a version of the VSIX extension earlier than 1.0.181002.2, then C++/WinRT build support was built into that version of the VSIX extension. Проект содержит набор свойств true в файле .vcxproj . Your project has the true property set in the .vcxproj file.

Вы можете обновить проект, вручную установив пакет NuGet Microsoft.Windows.CppWinRT. You can upgrade your project by manually installing the Microsoft.Windows.CppWinRT NuGet package. После установки (или обновления до) последней версии расширения VSIX откройте проект в Visual Studio и щелкните Проект > Управление пакетами NuGet. > Обзор, введите или вставьте Microsoft.Windows.CppWinRT в поле поиска, выберите элемент в результатах поиска, а затем нажмите кнопку Установить, чтобы установить пакет для проекта. After installing (or upgrading to) the latest version of the VSIX extension, open your project in Visual Studio, click Project > Manage NuGet Packages. > Browse, type or paste Microsoft.Windows.CppWinRT in the search box, select the item in search results, and then click Install to install the package for your project.

Созданные с версиями (или обновленные до) 1.0.181002.2–1.0.190128.3 Created with (or upgraded to) between 1.0.181002.2 and 1.0.190128.3

Если проект был создан с версией расширения VSIX между 1.0.181002.2 и 1.0.190128.3 включительно, пакет NuGet Microsoft.Windows.CppWinRT был автоматически установлен в проект по шаблону проекта. If your project was created with a version of the VSIX extension between 1.0.181002.2 and 1.0.190128.3, inclusive, then the Microsoft.Windows.CppWinRT NuGet package was installed in the project automatically by the project template. Кроме того, может также потребоваться обновить более старый проект для использования версии расширения VSIX в этом диапазоне. You might also have upgraded an older project to use a version of the VSIX extension in this range. Если вы это сделали, так как поддержка сборки все еще присутствовала в версиях расширения VSIX в этом диапазоне, в обновленном проекте может быть установлен или не установлен пакет NuGet Microsoft.Windows.CppWinRT. If you did, then—since build support was also still present in versions of the VSIX extension in this range—your upgraded project may or may not have the Microsoft.Windows.CppWinRT NuGet package installed.

Читайте также:  View version kernel linux

Чтобы обновить проект, следуйте инструкциям в предыдущем разделе и убедитесь, что в проекте установлен пакет NuGet Microsoft.Windows.CppWinRT. To upgrade your project, follow the instructions in the previous section and ensure that your project does have the Microsoft.Windows.CppWinRT NuGet package installed.

Недопустимые конфигурации обновления Invalid upgrade configurations

В последней версии расширения VSIX для проекта недопустимо иметь свойство true , если на нем также не установлен пакет NuGet Microsoft.Windows.CppWinRT. With the latest version of the VSIX extension, it’s not valid for a project to have the true property if it doesn’t also have the Microsoft.Windows.CppWinRT NuGet package installed. Проект с такой конфигурацией выдает сообщение об ошибке сборки: «The C++/WinRT VSIX no longer provides project build support. A project with this configuration produces the build error message, «The C++/WinRT VSIX no longer provides project build support. Please add a project reference to the Microsoft.Windows.CppWinRT Nuget package.» (C++/WinRT VSIX больше не поддерживает сборку проекта. Добавьте ссылку на пакет Nuget Microsoft.Windows.CppWinRT в проекте). Please add a project reference to the Microsoft.Windows.CppWinRT Nuget package.»

Как упоминалось выше, проект C++/WinRT теперь должен иметь установленный пакет NuGet. As mentioned above, a C++/WinRT project now needs to have the NuGet package installed in it.

Так как элемент устарел, вы можете при необходимости отредактировать параметр .vcxproj и удалить элемент. Since the element is now obsolete, you can optionally edit your .vcxproj , and delete the element. Это не обязательно, но возможно. It’s not strictly necessary, but it’s an option.

Кроме того, если параметр .vcxproj содержит $(RequiredBundles);Microsoft.Windows.CppWinRT , вы можете удалить его, чтобы можно было выполнить сборку, не устанавливая расширение VSIX C++/WinRT. Also, if your .vcxproj contains $(RequiredBundles);Microsoft.Windows.CppWinRT , then you can remove it so that you can build without requiring the C++/WinRT VSIX extension to be installed.

Поддержка пакетов SDK для C++/WinRT SDK support for C++/WinRT

Хотя теперь она присутствует только в целях обеспечения совместимости, начиная с версии 10.0.17134.0 (Windows 10, версия 1803), Windows SDK содержит стандартную библиотеку C++ на основе файлов заголовков для использования основных API-интерфейсов Windows (API среды выполнения Windows и пространства имен Windows). Although it is now present only for compatibility reasons, as of version 10.0.17134.0 (Windows 10, version 1803), the Windows SDK contains a header-file-based standard C++ library for consuming first-party Windows APIs (Windows Runtime APIs in Windows namespaces). Эти заголовки размещены в папке %WindowsSdkDir%Include \cppwinrt\winrt . Those headers are inside the folder %WindowsSdkDir%Include \cppwinrt\winrt . Начиная с версии Windows SDK 10.0.17763.0 (Windows 10, версия 1809), эти заголовки создаются в папке $(GeneratedFilesDir) проекта. As of the Windows SDK version 10.0.17763.0 (Windows 10, version 1809), these headers are generated for you inside your project’s $(GeneratedFilesDir) folder.

Опять-таки, в целях обеспечения совместимости пакет Windows SDK также поставляется с инструментом cppwinrt.exe . Again for compatibility, the Windows SDK also comes with the cppwinrt.exe tool. Однако мы рекомендуем вместо этого установить и использовать самую последнюю версию cppwinrt.exe , которая включена в пакет NuGet Microsoft.Windows.CppWinRT. However, we recommend that you instead install and use the most recent version of cppwinrt.exe , which is included with the Microsoft.Windows.CppWinRT NuGet package. Этот пакет и cppwinrt.exe описаны в разделах выше. That package, and cppwinrt.exe , are described in the sections above.

Пользовательские типы в проекции C++/WinRT Custom types in the C++/WinRT projection

При использовании C++/WinRT можно применять стандартные функции языка C++ и стандартные типы данных C++ и C++/WinRT, включая некоторые типы данных стандартной библиотеки C++. In your C++/WinRT programming, you can use standard C++ language features and Standard C++ data types and C++/WinRT—including some C++ Standard Library data types. Однако вы также получите сведения о некоторых пользовательских типах данных в проекции и сможете использовать их. But you’ll also become aware of some custom data types in the projection, and you can choose to use them. Например, мы используем winrt::hstring в кратком примере кода в разделе Начало работы с C++/WinRT. For example, we use winrt::hstring in the quick-start code example in Get started with C++/WinRT.

winrt::com_array является еще одним типом, который вы, скорее всего, используете в определенный момент. winrt::com_array is another type that you’re likely to use at some point. При этом вы с меньшей вероятностью будете использовать напрямую такие типы, как winrt::array_view. But you’re less likely to directly use a type such as winrt::array_view. Вы можете решить не использовать его, чтобы у вас не было кода, требующего изменений, если эквивалентный тип появится в стандартной библиотеке C++. Or you may choose not to use it so that you won’t have any code to change if and when an equivalent type appears in the C++ Standard Library.

Кроме того, существуют типы, которые можно обнаружить, если внимательно изучить заголовки пространства имен Windows C++/WinRT. There are also types that you might see if you closely study the C++/WinRT Windows namespace headers. Примером служит winrt::param::hstring, но существуют и примеры для коллекции. An example is winrt::param::hstring, but there are collection examples too. Они существуют исключительно для оптимизации привязки входных параметров, при этом помогают существенно повысить производительность и обеспечивают поддержку большинства шаблонов вызовов для связанных стандартных типов и контейнеров C++. These exist solely to optimize the binding of input parameters, and they yield big performance improvements and make most calling patterns «just work» for related standard C++ types and containers. Эти типы будут использоваться проекцией тогда, когда они будут наиболее эффективны. These types are only ever used by the projection in cases where they add most value. Они существенно оптимизированы и не предназначены для общего использования. Не применяйте их самостоятельно. They’re highly optimized and they’re not for general use; don’t be tempted to use them yourself. Вам также не следует использовать что-либо из пространства имен winrt::impl , так как это типы реализации, которые могут быть изменены. Nor should you use anything from the winrt::impl namespace, since those are implementation types, and therefore subject to change. Вам следует продолжать использовать стандартные типы или типы из пространства имен winrt. You should continue to use standard types, or types from the winrt namespace.

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