winrt::implements struct template (C++/WinRT)

這是您自己的 C++/WinRT 實作基底, (執行時間類別和啟用處理站) 直接或間接衍生的基底。 它會實作一或多個Windows 執行階段介面, (您將其指定為類型參數) ,它也提供IUnknownIInspectableIAgileObjectIWeakReferenceSource和其他專案的有效率實作。

注意

如需衍生自此類型的詳細資訊和範例,請參閱 使用 C++/WinRT 撰寫 API

winrt::implements 上的擴充點

winrt::implements 具有擴充點,可讓您延遲實作類型的解構、在解構期間安全地查詢,以及將專案連結至投影方法並結束。 以下是擴充點的名稱,以及詳細資料和程式碼範例的連結。

標記類型

結構範本支援數種標記類型,可用來覆寫預設行為。 我們預期這些只會很少使用;預設值幾乎適用于所有情況。 標記類型可以出現在介面清單中的任何位置,也就是 variadic 參數套件。

實作支援下列標記類型:

當您直接從 實作衍生時,就會套用這個第一個範例。

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

下一個範例是當您撰寫執行時間類別時。

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

Syntax

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%包含 < WindowsTargetPlatformVersion > \cppwinrt\winrt\base.h (預設包含)

成員函數

函式 描述
implements::AddRef 函式 遞增 實作 物件之預設介面的參考計數。
implements::find_inspectable 函式 TBD
implements::find_interface 函式 作物件所 實作之介面的指標,由指定的識別碼所識別;不會呼叫 AddRef
implements::get_local_iids 函式 擷取包含 實作 物件所實作之介面識別碼的兩個專案元組。
implements::get_strong 函式 擷取 實作 物件的 這個 指標的強式參考。
implements::get_weak 函式 擷取 實作 物件的 這個 指標的弱式參考。
implements::QueryInterface 函式 擷取 實作 物件所實作之介面的指標,由指定的識別碼識別;呼叫 AddRef
implements::Release 函式 遞減 實作 物件之預設介面的參考計數。

成員運算子

運算子 描述
implements::operator Windows::Foundation::IInspectable 實作 物件轉換為 Windows::Foundation::IInspectable

資料成員

資料成員 描述
m_inner 如果適用,請存取 撰寫 的物件。 如需詳細資訊,請參閱 執行時間類別衍生

implements::AddRef 函式

遞增 實作 物件之預設介面的參考計數。

語法

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 函式

擷取包含 實作 物件所實作之介面識別碼的兩個專案元組。 不包含「Cloaked」 介面

語法

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

傳回值

包含 實作 物件所實作之介面數目和識別碼的雙元素元組。

implements::get_strong 函式

擷取 winrt::implements 物件的 這個 指標的強式參考。 請參閱 C++/WinRT 中的強式和弱式參考。 因為 get_strongwinrt::implements 結構範本的成員函式,所以您只能從直接或間接衍生自 winrt::implements的物件呼叫它,例如 C++/WinRT 物件。 如需有關衍生自 winrt::implements 的資訊和範例,請參閱使用 C++/WinRT 撰寫 API

語法

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

傳回值

實作物件的這個指標的強式參考。

implements::get_weak function

擷取 winrt::implements 物件的 這個 指標的弱式參考。 請參閱 C++/WinRT 中的強式和弱式參考。 因為 get_weakwinrt::implements 結構範本的成員函式,所以您只能從直接或間接衍生自 winrt::implements的物件呼叫它,例如 C++/WinRT 物件。 如需有關衍生自 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 函式

遞減 作物件之預設介面的參考計數。

語法

unsigned long __stdcall Release() noexcept;

傳回值

新的參考計數。 此值僅供測試之用。

implements::operator Windows::Foundation::IInspectable

implements 物件轉換成 Windows::Foundation::IInspectable。 此運算子可讓您將 implements 物件傳遞至預期 IInspectable的函式。

語法

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

傳回值

實作 轉換成 Windows::Foundation::IInspectable 的物件

另請參閱