- Библиотека шаблонов Windows — Windows Template Library
- Содержание
- Обзор
- Лицензирование
- Библиотека шаблонов C++ среды выполнения Windows (WRL) Windows Runtime C++ Template Library (WRL)
- Преимущества Benefits
- Начало работы Getting Started
- Сравнение библиотеки шаблонов C++ среда выполнения Windows с ATL Windows Runtime C++ Template Library Compared to ATL
- Основные понятия Concepts
- ComPtr ComPtr
- RuntimeClass RuntimeClass
- Модуль Module
- Обратный вызов Callback
- EventSource EventSource
- AsyncBase AsyncBase
- FtmBase FtmBase
- WeakRef WeakRef
- См. также Related Topics
Библиотека шаблонов Windows — Windows Template Library
Разработчики) | Microsoft |
---|---|
Стабильный выпуск | |
Репозиторий | sourceforge .net / p / wtl / git / |
Написано в | C ++ |
Операционная система | Майкрософт Виндоус |
Тип | Библиотека |
Лицензия | Общая общественная лицензия , Общественная лицензия Microsoft |
Веб-сайт | wtl .sourceforge .net |
Окна Template Library ( WTL ) является свободным программным обеспечением , объектно-ориентированный C ++ шаблон библиотеки для Win32 развития. WTL был создан сотрудником Microsoft Ненадом Стефановичем для внутреннего использования и позже выпущен как неподдерживаемое дополнение к Visual Studio и Win32 Framework SDK. Он был разработан в первую очередь как облегченная альтернатива классам Microsoft Foundation и основывается на Microsoft ATL , другом легком API, широко используемом для создания библиотек COM и ActiveX .
Содержание
Обзор
WTL обеспечивает поддержку для реализации различных элементов пользовательского интерфейса, от фреймов и всплывающих окон до MDI , стандартных и общих элементов управления, общих диалогов, листов свойств и страниц, объектов GDI и других общих элементов пользовательского интерфейса, таких как прокручиваемые окна, окна-разделители, панели инструментов и панели команд. Основная цель WTL — предоставить небольшой и эффективный код, близкий по размеру и скорости к «прямым» программам SDK , обеспечивая при этом более высокоуровневую и более гибкую объектную модель для разработчиков. CString Также включены другие классы, такие как строковая оболочка, синтаксически совместимая с MFC, и некоторые шаблонные коллекции.
Большая часть WTL API является зеркалом стандартных вызовов Win32, поэтому интерфейс обычно знаком большинству программистов Windows. Хотя официальной документации от Microsoft не существует, проект документации WTL пытается создать исчерпывающий справочник по библиотеке. WTL не поддерживается службой поддержки продуктов Microsoft .
Лицензирование
Хотя WTL является библиотекой шаблонов и, следовательно, основывается на коде, исходная лицензия была аналогична той, которая использовалась для исходного кода библиотеки Microsoft Foundation Class (MFC), хотя она не содержала ограничений на использование или распространение. В 2004 году Microsoft сделала полный исходный код доступным по Общей общественной лицензии и выпустила его через SourceForge . Начиная с версии 9.1 библиотека находится под лицензией Microsoft Public License .
Библиотека шаблонов C++ среды выполнения Windows (WRL) Windows Runtime C++ Template Library (WRL)
Библиотека шаблонов C++ среды выполнения Windows (WRL) — это библиотека шаблонов, которая предлагает низкоуровневый способ создания и использования компонентов среды выполнения Windows. The Windows Runtime C++ Template Library (WRL) is a template library that provides a low-level way to author and use Windows Runtime components.
WRL теперь заменен на C++/WinRT, стандартной проекции языка C++ 17 для среда выполнения Windows API. WRL is now superseded by C++/WinRT, a standard C++17 language projection for Windows Runtime APIs. C++/WinRT доступна в пакете SDK для Windows 10, начиная с версии 1803. C++/WinRT is available in the Windows 10 SDK from version 1803 onward. C++/WinRT реализован полностью в файлах заголовков и предназначен для предоставления доступа к современным API Windows с помощью первого класса. C++/WinRT is implemented entirely in header files, and designed to provide you with first-class access to the modern Windows API.
С помощью C++/WinRT можно использовать и создавать интерфейсы среда выполнения Windows API, используя любой стандартно совместимый с C++ 17 компилятор. With C++/WinRT, you can both consume and author Windows Runtime APIs using any standards-compliant C++17 compiler. C++/WinRT, как правило, работает лучше и создает меньше двоичных файлов, чем любой другой языковой параметр для среда выполнения Windows. C++/WinRT typically performs better and produces smaller binaries than any other language option for the Windows Runtime. Мы продолжим предоставлять поддержку C++/CX и WRL, но в новых приложениях настоятельно рекомендуется использовать C++/WinRT. We will continue to support C++/CX and WRL, but highly recommend that new applications use C++/WinRT. См. дополнительные сведения о C++/WinRT. For more information, see C++/WinRT.
Преимущества Benefits
Библиотека шаблонов среда выполнения Windows C++ позволяет упростить реализацию и использование компонентов модели COM. The Windows Runtime C++ Template Library enables you to more easily implement and consume Component Object Model (COM) components. Он предоставляет методы обслуживания, такие как подсчет ссылок, для управления временем существования объектов и проверки значений HRESULT, чтобы определить, завершилась ли операция успешно или неудачно. It provides housekeeping techniques like reference-counting to manage the lifetime of objects and testing HRESULT values to determine whether an operation succeeded or failed. Для успешного использования библиотеки шаблонов среда выполнения Windows C++ необходимо соблюдать следующие правила и методы. To successfully use the Windows Runtime C++ Template Library, you must carefully follow these rules and techniques.
C++/CX — это высокоуровневый языковой способ использования среда выполнения Windows компонентов. The C++/CX is a high-level, language-based way to use Windows Runtime components. Как библиотека шаблонов среда выполнения Windows C++, так и C++/CX упрощают написание кода для среда выполнения Windows, автоматически выполняя задачи обслуживания от вашего имени. Both the Windows Runtime C++ Template Library and C++/CX simplify the writing of code for the Windows Runtime by automatically performing housekeeping tasks on your behalf.
Библиотека шаблонов среда выполнения Windows C++ и C++/CX предоставляют различные преимущества. The Windows Runtime C++ Template Library and C++/CX provide different benefits. Ниже приведены некоторые причины, по которым вместо C++/CX может потребоваться использовать библиотеку шаблонов среда выполнения Windows C++. Here are some reasons you might want to use the Windows Runtime C++ Template Library instead of C++/CX:
Среда выполнения Windows библиотека шаблонов C++ добавляет небольшую абстракцию по отношению к среда выполнения Windows двоичному интерфейсу приложения (ABI), предоставляя возможность управлять базовым кодом для более эффективного создания или использования API-интерфейсов среда выполнения Windows. Windows Runtime C++ Template Library adds little abstraction over the Windows Runtime Application Binary Interface (ABI), giving you the ability to control the underlying code to better create or consume Windows Runtime APIs.
C++/CX представляет значения COM HRESULT как исключения. C++/CX represents COM HRESULT values as exceptions. Если вы настроили базу кода, использующую COM, или одну, которая не использует исключения, возможно, вы обнаружите, что среда выполнения Windows библиотека шаблонов C++ является более естественным способом работы с среда выполнения Windows, так как не нужно использовать исключения. If you’ve inherited a code base that uses COM, or one that doesn’t use exceptions, you might find that the Windows Runtime C++ Template Library is a more natural way to work with the Windows Runtime because you don’t have to use exceptions.
Библиотека шаблонов среда выполнения Windows C++ использует значения HRESULT и не создает исключения. The Windows Runtime C++ Template Library uses HRESULT values and does not throw exceptions. Кроме того, Библиотека шаблонов C++ среда выполнения Windows использует интеллектуальные указатели и шаблон RAII, чтобы гарантировать, что объекты будут уничтожены правильно, когда код приложения создает исключение. In addition, the Windows Runtime C++ Template Library uses smart pointers and the RAII pattern to help guarantee that objects are destroyed correctly when your application code throws an exception. Дополнительные сведения о смарт-указателях и RAII см. в разделе интеллектуальные указатели и объекты, собственные ресурсы (RAII). For more info about smart pointers and RAII, see Smart Pointers and Objects Own Resources (RAII).
Назначение и проектирование библиотеки шаблонов среда выполнения Windows C++ — это библиотека ATL, которая представляет собой набор классов C++ на основе шаблонов, упрощающих программирование COM-объектов. The purpose and design of the Windows Runtime C++ Template Library is inspired by the Active Template Library (ATL), which is a set of template-based C++ classes that simplify the programming of COM objects. Поскольку среда выполнения Windows библиотека шаблонов C++ использует стандартный C++ для создания оболочки среда выполнения Windows, можно легко переносить и взаимодействовать с множеством существующих COM-компонентов, написанных в ATL, на среда выполнения Windows. Because Windows Runtime C++ Template Library uses standard C++ to wrap the Windows Runtime, you can more easily port and interact with many existing COM components written in ATL to the Windows Runtime. Если вы уже знакомы с библиотекой ATL, может оказаться, что среда выполнения Windows программирование библиотеки шаблонов C++ будет проще. If you already know ATL, you might find that Windows Runtime C++ Template Library programming is easier.
Начало работы Getting Started
Ниже приведены некоторые ресурсы, которые могут помочь вам сразу же приступить к работе с библиотекой шаблонов среда выполнения Windows C++. Here are some resources that can help you get working with the Windows Runtime C++ Template Library right away.
Библиотека времени выполнения Windows (WRL) The Windows Runtime Library (WRL)
В этом видео Channel 9 вы узнаете о том, как библиотека шаблонов среда выполнения Windows C++ помогает создавать приложения универсальная платформа Windows (UWP), а также создавать и использовать компоненты среда выполнения Windows. In this Channel 9 video, learn more about how the Windows Runtime C++ Template Library helps you write Universal Windows Platform (UWP) apps and how to author and consume Windows Runtime components.
Практическое руководство. Активация и использование компонента среды выполнения Windows How to: Activate and Use a Windows Runtime Component
Показывает, как использовать библиотеку шаблонов среда выполнения Windows C++ для инициализации среда выполнения Windows и активации и использования компонента среда выполнения Windows. Shows how to use the Windows Runtime C++ Template Library to initialize the Windows Runtime and activate and use a Windows Runtime component.
Практическое руководство. Завершение асинхронных операций How to: Complete Asynchronous Operations
Демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для запуска асинхронных операций и выполнения работы по завершении операций. Shows how to use the Windows Runtime C++ Template Library to start asynchronous operations and perform work when the operations complete.
Практическое руководство. Обработка событий How to: Handle Events
Показывает, как использовать библиотеку шаблонов среда выполнения Windows C++ для подписки на события объекта среда выполнения Windows и управления им. Shows how to use the Windows Runtime C++ Template Library to subscribe to and handle the events of a Windows Runtime object.
Практическое руководство. Создание классического компонента COM How to: Create a Classic COM Component
Демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для создания базового COM-компонента и базового способа регистрации и использования COM-компонента из классического приложения. Shows how to use the Windows Runtime C++ Template Library to create a basic COM component and a basic way to register and consume the COM component from a desktop app.
Как напрямую создать экземпляры компонентов WRL How to: Instantiate WRL Components Directly
Сведения об использовании функций Microsoft::WRL::Make и Microsoft::WRL::Details::MakeAndInitialize для создания экземпляра компонента из определяющего его модуля. Learn how to use the Microsoft::WRL::Make and Microsoft::WRL::Details::MakeAndInitialize functions to instantiate a component from the module that defines it.
Практическое руководство. Использование winmdidl.exe и midlrt.exe для создания H-файлов из метаданных Windows How to: Use winmdidl.exe and midlrt.exe to create .h files from windows metadata
Демонстрация использования пользовательских компонент среды выполнения Windows из WRL путем создания IDL-файла из метаданных WINMD. Shows how to consume custom Windows Runtime components from WRL by creating an IDL file from the .winmd metadata.
Пошаговое руководство. подключение с помощью задач и HTTP-запросов XML Walkthrough: Connecting Using Tasks and XML HTTP Requests
Показывает, как использовать интерфейсы IXMLHTTPRequest2 и IXMLHTTPRequest2Callback вместе с задачами для отправки запросов HTTP GET и POST к веб-службе в приложении UWP. Shows how to use the IXMLHTTPRequest2 and IXMLHTTPRequest2Callback interfaces together with tasks to send HTTP GET and POST requests to a web service in a UWP app.
Создание компонента DLL среды выполнения Windows с использованием примера C++ Creating a Windows Runtime DLL component with C++ sample
Показывает, как использовать библиотеку шаблонов C++ среда выполнения Windows, чтобы создать внутрипроцессный компонент DLL и использовать его из C++/CX, JavaScript и C#. Shows how to use the Windows Runtime C++ Template Library to create an in-process DLL component and consume it from C++/CX, JavaScript, and C#.
Пример игры DirectX Marble Maze DirectX marble maze game sample
Демонстрирует использование библиотеки шаблонов среда выполнения Windows C++ для управления временем существования компонентов COM, таких как DirectX и Media Foundation в контексте полной трехмерной игры. Demonstrates how to use the Windows Runtime C++ Template Library to manage the lifetime of COM components such as DirectX and Media Foundation in the context of a complete 3-D game.
Всплывающие уведомления из классических приложений Toast notifications from desktop apps
Демонстрирует, как отправлять всплывающие уведомления из классического приложения. Demonstrates how to send toast notifications from a desktop app.
Сравнение библиотеки шаблонов C++ среда выполнения Windows с ATL Windows Runtime C++ Template Library Compared to ATL
Библиотека шаблонов C++ среда выполнения Windows похожа на библиотеку ATL, поскольку ее можно использовать для создания небольших и быстрых COM-объектов. Windows Runtime C++ Template Library resembles the Active Template Library (ATL) because you can use it to create small, fast COM objects. Среда выполнения Windows библиотека шаблонов C++ и ATL также совместно используют такие понятия, как определение объектов в модулях, явная регистрация интерфейсов и открытие создания объектов с помощью фабрик. Windows Runtime C++ Template Library and ATL also share concepts such as definition of objects in modules, explicit registration of interfaces, and open creation of objects by using factories. Если вы знакомы с библиотекой ATL, возможно, вам будет удобнее среда выполнения Windows библиотеку шаблонов C++. You might be comfortable with Windows Runtime C++ Template Library if you’re familiar with ATL.
Библиотека шаблонов C++ среда выполнения Windows поддерживает функции COM, необходимые для приложений UWP. Windows Runtime C++ Template Library supports the COM functionality that is required for UWP apps. Поэтому она отличается от библиотеки ATL, поскольку в последней нет непосредственной поддержки таких функций модели COM, как: Therefore, it differs from the ATL because it omits direct support for COM features such as:
стандартные реализации stock implementations
сдвоенные интерфейсы ( IDispatch ) dual interfaces ( IDispatch )
стандартные интерфейсы перечислителя standard enumerator interfaces
точки подключения connection points
перемещаемые интерфейсы tear-off interfaces
внедрение OLE OLE embedding
Элементы управления ActiveX ActiveX controls
Основные понятия Concepts
Среда выполнения Windows библиотека шаблонов C++ предоставляет типы, представляющие несколько основных понятий. Windows Runtime C++ Template Library provides types that represent a few basic concepts. Эти типы описаны в следующих разделах. The following sections describe those types.
ComPtr ComPtr
тип ComPtr — тип интеллектуального указателя , который представляет интерфейс, определяемый параметром шаблона. ComPtr is a smart pointer type that represents the interface that’s specified by the template parameter. Тип ComPtr используется для объявления переменной, которая может получить доступ к членам объекта, производного от интерфейса. Use ComPtr to declare a variable that can access the members of an object that’s derived from the interface. ComPtr автоматически поддерживает счетчик ссылок для указателя базового интерфейса и освобождает интерфейс, когда счетчик ссылок становится равен нулю. ComPtr automatically maintains a reference count for the underlying interface pointer and releases the interface when the reference count goes to zero.
RuntimeClass RuntimeClass
RuntimeClass представляет собой экземпляр класса, который наследуется от набора указанных интерфейсов. RuntimeClass represents an instantiated class that inherits a set of specified interfaces. RuntimeClass Объект может предоставить сочетание поддержки для одного или нескольких среда выполнения Windows COM-интерфейсов или слабой ссылки на компонент. A RuntimeClass object can provide a combination of support for one or more Windows Runtime COM interfaces, or a weak reference to a component.
Модуль Module
Module представляет коллекцию связанных объектов. Module represents a collection of related objects. Объект Module управляет фабриками класса, создающими объекты, и регистрацией, которая позволяет другим приложениям использовать объект. A Module object manages class factories, which create objects, and registration, which enables other applications to use an object.
Обратный вызов Callback
Функция Callback создает объект, функция-член которого является обработчиком событий (метод обратного вызова). The Callback function creates an object whose member function is an event handler (a callback method). Функция Callback используется для записи асинхронных операций. Use the Callback function to write asynchronous operations.
EventSource EventSource
EventSource используется для управления обработчиками событий делегатов . EventSource is used to manage delegate event handlers. Используйте среда выполнения Windows библиотеку шаблонов C++, чтобы реализовать делегат и использовать EventSource для добавления, удаления и вызова делегатов. Use Windows Runtime C++ Template Library to implement a delegate, and use EventSource to add, remove, and invoke delegates.
AsyncBase AsyncBase
Метод asyncbase предоставляет виртуальные методы, представляющие модель асинхронного программирования среда выполнения Windows. AsyncBase provides virtual methods that represent the Windows Runtime asynchronous programming model. Переопределите члены этого класса для создания пользовательского класса, который может запускать и останавливать асинхронную операцию, а также проверять ход ее выполнения. Override the members in this class to create a custom class that can start, stop, or check the progress of an asynchronous operation.
FtmBase FtmBase
FtmBase представляет объект маршаллера в режиме свободного потока. FtmBase represents a free-threaded marshaler object. FtmBase создает общую таблицу интерфейса (GIT) и помогает управлять маршалингом и прокси-объектами. FtmBase creates a global interface table (GIT), and helps manage marshaling and proxy objects.
WeakRef WeakRef
WeakRef — тип интеллектуального указателя, представляющий слабую ссылку на объект, который может быть доступен или недоступен. WeakRef is a smart-pointer type that represents a weak reference, which references an object that might or might not be accessible. WeakRef Объект может использоваться только среда выполнения Windows, а не классической моделью COM. A WeakRef object can be used by only the Windows Runtime, and not by classic COM.
Объект WeakRef обычно представляет объект, наличием которого управляет внешний поток или приложение. A WeakRef object typically represents an object whose existence is controlled by an external thread or application. Например, объект WeakRef может ссылаться на объект файла. For example, a WeakRef object can reference a file object. При открывании файла WeakRef является допустимым и файл, на который он ссылается, доступен. When the file is open, the WeakRef is valid and the referenced file is accessible. Однако после закрытия файла WeakRef перестает быть допустимым и файл становится недоступным. But when the file is closed, the WeakRef is invalid and the file is not accessible.
См. также Related Topics
Ключевые API по категориям Key APIs by Category
Выделяет основные типы, функции и макросы библиотеки шаблонов C++ среда выполнения Windows. Highlights the primary Windows Runtime C++ Template Library types, functions, and macros.
IsReference Reference
Содержит справочные сведения для библиотеки шаблонов среда выполнения Windows C++. Contains reference information for the Windows Runtime C++ Template Library.
Краткий справочник (C++/CX) Quick Reference (C++/CX)
Краткое описание функций C++/CX, которые поддерживают среда выполнения Windows. Briefly describes the C++/CX features that support the Windows Runtime.
Использование среда выполнения Windows компонентов в Visual C++ Using Windows Runtime Components in Visual C++
Показывает, как использовать C++/CX для создания базового среда выполнения Windows компонента. Shows how to use C++/CX to create a basic Windows Runtime component.