winrt::implements 구조체 템플릿(C++/WinRT)

이는 사용자 고유의 C++/WinRT 구현(런타임 클래스 및 활성화 팩터리)이 직접 또는 간접적으로 파생되는 기반입니다. 형식 매개 변수로 지정하는 하나 이상의 Windows 런타임 인터페이스를 구현하고 IUnknown, IInspectable, IAgileObject, IWeakReferenceSource 등의 효율적인 구현도 제공합니다.

참고

이 형식에서 파생하는 방법에 대한 자세한 내용 및 예제는 C++/WinRT를 사용하여 API 작성을 참조하세요.

winrt::implements의 확장 지점

winrt::implements 에는 구현 형식의 소멸을 연기하고, 소멸 중에 안전하게 쿼리하고, 프로젝션된 메서드에 항목을 연결하고 종료할 수 있는 확장 지점이 있습니다. 다음은 확장 지점의 이름과 세부 정보 및 코드 예제에 대한 링크입니다.

표식 형식

구현 구조체 템플릿은 기본 동작을 재정의하는 데 사용되는 여러 표식 형식을 지원합니다. 이러한 값은 거의 사용되지 않을 것으로 예상됩니다. 기본값은 거의 모든 경우에 충분합니다. 표식 형식은 variadic 매개 변수 팩인 인터페이스 목록의 아무 곳에나 나타날 수 있습니다.

다음 표식 형식은 구현에서 지원됩니다.

이 첫 번째 예제는 구현에서 직접 파생할 때 적용 됩니다.

struct MyImplementation: implements<MyImplementation, IFrameworkViewSource, no_weak_ref>
{
    ...
}

다음 예제는 런타임 클래스를 작성하는 경우에 대한 것입니다.

struct BookSku : BookSkuT<BookSku, no_weak_ref>
{
    ...
}

구문

template <typename D, typename... I>
struct implements

템플릿 매개 변수

typename D 파생 형식 이름입니다.

typename... I 구현할 인터페이스 수와 원하는 표식 형식이 있습니다.

기본적으로 IInspectable 에서 파생되는 인터페이스는 IInspectable::GetIids 메서드의 구현에 의해 보고됩니다. 표식 템플릿을cloaked 사용하여 표시하지 않습니다.

예제

// App.cpp
...
struct App : implements<App, IFrameworkViewSource>
{
    IFrameworkView CreateView()
    {
        return ...
    }
}
...

요구 사항

지원되는 최소 SDK: Windows SDK 버전 10.0.17134.0(Windows 10, 버전 1803)

네임스페이스: winrt

헤더: %WindowsSdkDir%Include<WindowsTargetPlatformVersion>\cppwinrt\winrt\base.h(기본적으로 포함)

멤버 함수

함수 Description
implements::AddRef 함수 implements 개체의 기본 인터페이스에 대한 참조 수를 증분합니다.
implements::find_inspectable 함수 TBD
implements::find_interface 함수 구현 된 인터페이스에 대 한 포인터는 구현 개체, 지정 된 식별자에 의해 식별; 는 AddRef를 호출하지 않습니다.
implements::get_local_iids 함수 implements 개체에 의해 구현되는 인터페이스의 식별자를 포함하는 2개 요소 튜플 을 검색합니다 .
implements::get_strong 함수 구현 개체의 포인터에 대한 강력한 참조를 검색합니다.
implements::get_weak 함수 구현 개체의 포인터에 대한 약한 참조를 검색합니다.
implements::QueryInterface 함수 지정된 식별자에 의해 식별되는 implements 개체에 의해 구현된 인터페이스에 대한 포인터를 검색합니다. 는 AddRef를 호출합니다.
implements::Release 함수 implements 개체의 기본 인터페이스에 대한 참조 수를 감소합니다.

멤버 연산자

연산자 Description
implements::operator Windows::Foundation::IInspectable implements 개체를Windows::Foundation::IInspectable로 변환합니다.

데이터 멤버

데이터 멤버 Description
m_inner 해당하는 경우 구성된 개체에 액세스합니다. 자세한 내용은 런타임 클래스 파생을 참조하세요.

implements::AddRef 함수

implements 개체의 기본 인터페이스에 대한 참조 수를 증분합니다.

구문

unsigned long __stdcall AddRef() noexcept;

반환 값

새 참조 수입니다. 이 값은 테스트 목적으로만 사용됩니다.

implements::find_inspectable 함수

구현 개체에 의해 구현된 IInspectable 인터페이스에 대한 포인터 를 검색합니다 . 반환되는 포인터에서 AddRef 를 호출하지 않습니다. 이 함수를 사용하면 구현 개체를IInspectable이 필요한 함수에 전달할 수 있습니다.

구문

::IInspectable* find_inspectable() const noexcept override;

반환 값

구현 개체에 의해 구현된 IInspectable 인터페이스에 대한 포인터입니다 .

implements::find_interface 함수

지정된 식별자에 의해 식별되는 구현 개체에 의해 구현된 인터페이스에 대한 포인터를 검색합니다. 반환되는 포인터에서 AddRef 를 호출하지 않습니다.

구문

void* find_interface(winrt::guid const& id) const noexcept override;

반환 값

에서 구현하는 인터페이스에 대한 포인터는 지정된 식별자에 의해 식별되는 개체를 구현 합니다.

implements::get_local_iids 함수

implements 개체에 의해 구현되는 인터페이스의 식별자를 포함하는 2개 요소 튜플 을 검색합니다 . "은폐된" 인터페이스는 포함되지 않습니다.

구문

std::pair<uint32_t, const winrt::guid*> get_local_iids() const noexcept override;

반환 값

구현 개체에 의해 구현되는 인터페이스의 수와 식별자를 포함하는 2개 요소 튜플 입니다 .

implements::get_strong 함수

winrt::implements 개체의 포인터에 대한 강력한 참조를 검색합니다. C++/WinRT의 강한 참조 및 약한 참조를 참조하세요. get_strongwinrt::implements 구조체 템플릿의 멤버 함수이므로 C++/WinRT 개체와 같이 winrt::implements에서 직접 또는 간접적으로 파생되는 개체에서만 호출할 수 있습니다. winrt::implements에서 파생하는 방법에 대한 자세한 내용과 예제는 C++/WinRT를 통한 API 작성을 참조하세요.

구문

protected:
    winrt::com_ptr<D> get_strong() noexcept;

반환 값

에 대한 강력한 참조는 개체의 포인터를 구현합니다.

implements::get_weak 함수

winrt::implements 개체의 포인터에 대한 약한 참조를 검색합니다. C++/WinRT의 강한 참조 및 약한 참조를 참조하세요. get_weakwinrt::implements 구조체 템플릿의 멤버 함수이므로 C++/WinRT 개체와 같이 winrt::implements에서 직접 또는 간접적으로 파생되는 개체에서만 호출할 수 있습니다. winrt::implements에서 파생하는 방법에 대한 자세한 내용과 예제는 C++/WinRT를 통한 API 작성을 참조하세요.

구문

protected:
    winrt::weak_ref<D> get_weak() noexcept;

반환 값

에 대한 약한 참조를 나타내는 weak_ref 개체는 구현 개체의 포인터입니다.

implements::QueryInterface 함수

지정된 식별자에 의해 식별되는 구현 개체에 의해 구현 된 인터페이스에 대한 포인터를 검색합니다. 반환하는 포인터에서 AddRef 를 호출합니다.

구문

HRESULT __stdcall QueryInterface(winrt::guid const& id, void** object) noexcept;

반환 값

새 참조 수입니다. 이 값은 테스트 목적으로만 사용됩니다.

implements::Release 함수

implements 개체의 기본 인터페이스에 대한 참조 수를 감소합니다.

구문

unsigned long __stdcall Release() noexcept;

반환 값

새 참조 수입니다. 이 값은 테스트 목적으로만 사용됩니다.

implements::operator Windows::Foundation::IInspectable

구현 개체를Windows::Foundation::IInspectable로 변환합니다. 이 연산자를 사용하면 구현 개체를IInspectable이 필요한 함수에 전달할 수 있습니다.

구문

operator winrt::Windows::Foundation::IInspectable() const noexcept;

반환 값

Windows::Foundation::IInspectable로 변환된 개체를 구현합니다.

참고 항목