Обучение
Схема обучения
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
C++/WinRT — это полностью стандартная проекция языка C++17 для API среды выполнения Windows (WinRT), реализованная как библиотека на основе файлов заголовков и предназначенная для предоставления вам первоклассного доступа к современным интерфейсам API Windows. С помощью C++/WinRT можно создавать и использовать интерфейсы API среды выполнения Windows, используя любой совместимый со стандартами компилятор C++17. В пакет Windows SDK входит среда C++/WinRT, которая впервые появилась в версии 10.0.17134.0 (Windows 10, версия 1803).
C++/ WinRT предназначается для любых разработчиков, которые заинтересованы в написании превосходного и быстрого кода для Windows. Для этого есть следующие причины.
Язык C++ используется как в корпоративном сегменте, так и независимыми поставщиками программного обеспечения для приложений, для которых необходимы высокие уровни надежности, качества и производительности. Вот некоторые из применений: системное программирование; ограниченные в ресурсах встроенные и мобильные системы; игры и графика; драйверы устройств; а также промышленные, научные и медицинские приложения.
Как язык C++ всегда применялся при разработке и использовании абстракций, одновременно облегченных и обладающих большим количеством типов. Но со времен необработанных указателей, необработанных циклов, сложного выделения памяти и выпуска C++98 язык сильно изменился. Современный C++ (начиная с версии C++11 и выше) позволяет четко выражать идеи, обеспечивает простоту, удобочитаемость и снижает вероятность появления ошибок.
Для создания и использования интерфейсов API Windows на языке C++ используется C++/WinRT. Это рекомендуемая корпорацией Майкрософт замена для проекции языка C++/CX и библиотеки шаблонов C++ для среды выполнения Windows (WRL).
При использовании C++/WinRT применяются стандартные типы данных, алгоритмы и ключевые слова C++. Эта проекция имеет собственные типы данных, но в большинстве случаев вам не нужно их изучать, так как они обеспечивают соответствующие преобразования из стандартных типов и обратно. Таким образом, можно продолжать использовать стандартные возможности языка C++, к которым вы привыкли, а также исходный код, который у вас уже есть. C++/WinRT радикально упрощает вызов интерфейсов API Windows в любом приложении на C++ для любой платформы — от Win32 до Windows AppSDK и UWP.
C++/WinRT работает лучше и создает двоичные файлы меньшего размера, чем любой другой вариант языка для среды выполнения Windows. Его производительность даже выше рукописного кода, использующего двоичные интерфейсы ABI напрямую. Это связано с тем, что абстракции используют современные идиомы C++, которые способен оптимизировать компилятор Visual C++. Это включает в себя волшебные статические методы, пустые базовые классы, элизию strlen, а также множество новых оптимизаций в последней версии Visual C++, специально предназначенных для повышения производительности C++/WinRT.
Существует два способа постепенного внедрения C++/WinRT в проекты: с помощью компонентов среды выполнения Windows или путем взаимодействия с C++/CX. Дополнительные сведения см. в статье Взаимодействие между C++/WinRT и C++/CX.
Сведения о переходе на C++/WinRT см. в следующих ресурсах.
См. раздел Где можно найти примеры приложений C++/WinRT?
Раздел | Описание |
---|---|
Введение в C++/WinRT | Введение в C++/WinRT — стандартную проекцию языка C++ для API среды выполнения Windows. |
Начало работы с C++/WinRT | Чтобы вы могли быстро приступить к работе с C++/WinRT, в этой статье описывается простой пример кода. |
Что нового в C++/WinRT | Новости и изменения в C++/WinRT. |
Вопросы и ответы | Ответы на часто возникающие вопросы о разработке и использовании интерфейсов API среды выполнения Windows с помощью C++/WinRT. |
Устранение неполадок | Таблица симптомов и способов их устранения в этом разделе может быть полезна при создании нового кода и переносе существующего приложения. |
Пример приложения C++/WinRT — редактор фотографий | Редактор фотографий — это пример приложения UWP, демонстрирующего возможности разработки с помощью проекции языка C++/WinRT. Пример приложения позволяет извлекать фотографии из библиотеки Pictures, а затем редактировать выбранное изображение, используя разные фотографические эффекты. |
Обработка строк | С помощью C++/WinRT можно вызывать интерфейсы API среды выполнения Windows, используя стандартные типы широких строк C++ или тип winrt::hstring. |
Стандартные типы данных C++ и C++/WinRT | С помощью C++/WinRT можно вызывать интерфейсы API среды выполнения Windows с использованием стандартных типов данных C++. |
Упаковка-преобразование значений в IInspectable и распаковка-преобразование IInspectable | Скалярное значение или массив необходимо поместить в объект ссылочного класса перед его передачей в функцию, которая ожидает IInspectable. Этот процесс называют упаковкой значения. |
Использование интерфейсов API с помощью C++/WinRT | В этом разделе показано, как использовать интерфейсы API C++/WinRT, если они реализованы Windows, сторонним поставщиком компонентов или вами самостоятельно. |
Создание интерфейсов API с помощью C++/WinRT | В этом разделе показано, как создавать интерфейсы API C++/ WinRT, используя базовую структуру winrt::implements прямо или косвенно. |
Обработка ошибок в C++/WinRT | В этом разделе обсуждаются стратегии обработки ошибок при программировании на C++/WinRT. |
Обработка событий с помощью делегатов | В этом разделе показано, как регистрировать и отзывать делегаты обработки событий с помощью C++/WinRT. |
Создание событий | В этом разделе показано, как создать компонент среды выполнения Windows, который содержит класс среды выполнения, порождающий события. В нем также показано приложение, которое использует этот компонент и обрабатывает события. |
Использование коллекций с помощью C++/WinRT | C++/WinRT предоставляет функции и базовые классы, которые позволяют сэкономить много времени и усилий, если требуется реализовать и (или) передавать коллекции. |
Параллельная обработка и асинхронные операции | В этом разделе показаны способы, которыми можно создавать и использовать асинхронные объекты среды выполнения Windows с помощью C++/WinRT. |
Расширенные сценарии с параллелизмом и асинхронностью | Расширенные сценарии с параллелизмом и асинхронностью в C++/WinRT. |
Пример источника завершения | Показывает, как создать и использовать собственный исходный класс завершения. |
Элементы управления XAML; привязка к свойству C++/WinRT | Свойство, которое может быть эффективно привязано к элементу управления XAML, называется отслеживаемым. В этом разделе показано, как реализовать и использовать отслеживаемое свойство и привязать к нему элемент управления XAML. |
Элементы управления XAML; привязка к коллекции C++/WinRT | Коллекция, которая может быть эффективно привязана к элементам управления XAML, называется отслеживаемой. В этом разделе показано, как реализовать и использовать отслеживаемую коллекцию и привязать к ней элементы управления XAML. |
Создание пользовательских (на основе шаблона) элементов управления XAML с помощью C++/WinRT | В этом разделе рассматриваются этапы создания простого пользовательского элемента управления с помощью C++/WinRT. С помощью приведенной информации можно создавать собственные многофункциональные и настраиваемые элементы пользовательского интерфейса. |
Передача параметров в проецируемые API | C++/WinRT упрощает передачу параметров в проецируемые API, предоставляя автоматические преобразования для распространенных случаев. |
Использование компонентов COM с помощью C++/WinRT | В этом разделе приведен полный пример кода Direct2D, чтобы показать, как использовать классы и интерфейсы COM с помощью C++/WinRT. |
Создание компонентов COM с помощью C++/WinRT | C++/WinRT можно использовать для разработки классических компонентов COM, так как эта проекция языка помогает создавать классы среды выполнения Windows. |
Переход на C++/WinRT из C++/CX | В этой статье описаны технические особенности переноса исходного кода из проекта C++/CX в его эквивалент в C++/WinRT. |
Взаимодействие между C++/WinRT и C++/CX | В этом разделе описаны две вспомогательные функции, которые могут использоваться для преобразования между объектами C++/CX и C++/WinRT. |
Асинхронное выполнение задач и взаимодействие между C++/WinRT и C++/CX | Это дополнительная статья, посвященная постепенному переходу с C++/CX на C++/WinRT. В ней показано, как задачи библиотеки параллельных шаблонов (PPL) и сопрограмм могут существовать параллельно в одном проекте. |
Переход на C++/WinRT с WRL | В этом разделе показано, как перенести код библиотеки шаблонов C++ для среды выполнения Windows (WRL) в его эквивалент на C++/WinRT. |
Перенос примера буфера обмена в C++/WinRT из C# (пример использования) | В этой статье рассматривается пример переноса одного примера приложения универсальной платформы Windows (UWP) из C# в C++/WinRT. Вы можете получить рекомендации и действия по переносу, следуя пошаговому руководству и выполняя перенос образца. |
Переход на C++/WinRT с C# | В этой статье указаны все технические особенности переноса исходного кода из проекта C# в его эквивалент в C++/WinRT. |
Взаимодействие между C++/WinRT и интерфейсом ABI | В этом разделе показано, как выполнять преобразование между объектами двоичного интерфейса приложений (ABI) и C++/WinRT. |
Сильные и слабые ссылки в C++/WinRT | Среда выполнения Windows — это система с учетом ссылок. В подобной системе очень важно знать о значении сильных и слабых ссылок, а также о различиях между ними. |
Гибкие объекты | Гибкий объект — это объект, доступ к которому может осуществляться из любого потока. Типы C++/WinRT являются гибкими по умолчанию, но вы можете это отключить. |
Диагностика прямых выделений | В этом разделе подробно описывается компонент C++/WinRT 2.0. Вы можете использовать его для диагностики неполадок с созданием объекта типа реализации в стеке вместо семейства вспомогательных методов winrt::make. |
Точки расширения для типов реализации | Эти точки расширения в C++/WinRT 2.0 позволяют откладывать уничтожение типов реализации, чтобы безопасно выполнять запросы во время уничтожения, а также обрабатывать вход в проектируемые методы и выход из них. |
Базовый пример библиотеки пользовательского интерфейса Windows 2 для C++/WinRT (UWP) | Из этого раздела вы узнаете, как включить базовую поддержку библиотеки пользовательского интерфейса Windows (WinUI) в проекте C++/WinRT UWP. В частности, в этом разделе рассматривается библиотека WinUI 2, которая предназначена для приложений UWP. |
Создание компонентов среды выполнения Windows с помощью C++/WinRT | В этом разделе показано, как с помощью C++/WinRT можно создать и использовать компонент среды выполнения Windows, который можно вызвать из универсального приложения для Windows, созданного с помощью любого языка среды выполнения Windows. |
Создание компонента среда выполнения Windows C# для использования из приложения C++/WinRT | В этом разделе описывается процесс добавления простого компонента C# в ваш проект C++/WinRT |
Нативная визуализация отладки (natvis) Visual Studio для C++/WinRT | Расширение C++/WinRT для Visual Studio (VSIX) позволяет выполнять нативную визуализацию отладки (natvis) Visual Studio для проектируемых типов C++/WinRT. Это обеспечивает возможности, аналогичные отладке C#. |
Макросы конфигурации | В этом разделе содержатся сведения о макросах конфигурации C++/WinRT. |
Соглашения об именовании для C++/WinRT | В этом разделе приводятся соглашения об именовании, принятые для C++/WinRT. |
Раздел | Описание |
---|---|
Категории значений и ссылки на них | В этом разделе описываются различные категории значений, которые существуют в C++. Вы наверняка уже слышали о значениях lvalue и rvalue, но существуют и другие типы. |
Обучение
Схема обучения
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization