winrt::implements struct template (C++/WinRT)
這是您自己的 C++/WinRT 實作基底, (執行時間類別和啟用處理站) 直接或間接衍生的基底。 它會實作一或多個Windows 執行階段介面, (您將其指定為類型參數) ,它也提供IUnknown、IInspectable、IAgileObject、IWeakReferenceSource和其他專案的有效率實作。
注意
如需衍生自此類型的詳細資訊和範例,請參閱 使用 C++/WinRT 撰寫 API。
winrt::implements 具有擴充點,可讓您延遲實作類型的解構、在解構期間安全地查詢,以及將專案連結至投影方法並結束。 以下是擴充點的名稱,以及詳細資料和程式碼範例的連結。
實 作 結構範本支援數種標記類型,可用來覆寫預設行為。 我們預期這些只會很少使用;預設值幾乎適用于所有情況。 標記類型可以出現在介面清單中的任何位置,也就是 variadic 參數套件。
實作支援下列標記類型:
- 遮蔽我 <>
- 可組合
- 組成
- non_agile
- no_weak_ref
- no_module_lock
- static_lifetime處理站 ()
當您直接從 實作衍生時,就會套用這個第一個範例。
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%包含 < 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 | 如果適用,請存取 撰寫 的物件。 如需詳細資訊,請參閱 執行時間類別衍生。 |
遞增 實作 物件之預設介面的參考計數。
unsigned long __stdcall AddRef() noexcept;
新的參考計數。 此值僅供測試之用。
擷取實作物件所實作之 IInspectable介面的指標。 不會在傳回的指標上呼叫 AddRef 。 此函式可讓您將 實作 物件傳遞至預期 IInspectable的函式。
::IInspectable* find_inspectable() const noexcept override;
實作物件所實作之 IInspectable介面的指標。
擷取 實作 物件所實作之介面的指標,由指定的識別碼識別。 不會在傳回的指標上呼叫 AddRef 。
void* find_interface(winrt::guid const& id) const noexcept override;
實 作物件所 實作之介面的指標,由指定的識別碼識別。
擷取包含 實作 物件所實作之介面識別碼的兩個專案元組。 不包含「Cloaked」 介面。
std::pair<uint32_t, const winrt::guid*> get_local_iids() const noexcept override;
包含 實作 物件所實作之介面數目和識別碼的雙元素元組。
擷取 winrt::implements 物件的 這個 指標的強式參考。 請參閱 C++/WinRT 中的強式和弱式參考。 因為 get_strong 是 winrt::implements 結構範本的成員函式,所以您只能從直接或間接衍生自 winrt::implements的物件呼叫它,例如 C++/WinRT 物件。 如需有關衍生自 winrt::implements 的資訊和範例,請參閱使用 C++/WinRT 撰寫 API。
protected:
winrt::com_ptr<D> get_strong() noexcept;
實作物件的這個指標的強式參考。
擷取 winrt::implements 物件的 這個 指標的弱式參考。 請參閱 C++/WinRT 中的強式和弱式參考。 因為 get_weak 是 winrt::implements 結構範本的成員函式,所以您只能從直接或間接衍生自 winrt::implements的物件呼叫它,例如 C++/WinRT 物件。 如需有關衍生自 winrt::implements 的資訊和範例,請參閱使用 C++/WinRT 撰寫 API。
protected:
winrt::weak_ref<D> get_weak() noexcept;
weak_ref物件,表示實作物件的這個指標的弱式參考。
擷取 實 作 物件所實作之介面的指標,由指定的識別碼識別。 在傳回的指標上呼叫 AddRef 。
HRESULT __stdcall QueryInterface(winrt::guid const& id, void** object) noexcept;
新的參考計數。 此值僅供測試之用。
遞減 實 作物件之預設介面的參考計數。
unsigned long __stdcall Release() noexcept;
新的參考計數。 此值僅供測試之用。
將 implements 物件轉換成 Windows::Foundation::IInspectable。 此運算子可讓您將 implements 物件傳遞至預期 IInspectable的函式。
operator winrt::Windows::Foundation::IInspectable() const noexcept;
會 實作 轉換成 Windows::Foundation::IInspectable 的物件。