共用方式為


Windows Runtime C++ Template Library (WRL)

Windows 執行階段 C++ 樣板庫 (WRL) 是一種低階的方式建立和使用 Windows 執行階段 元件的樣板程式庫。

好處

WRL 更輕鬆地將實作和使用元件物件模型 (COM) (COM) 元件。 它提供維護技術,如參考次數嘗試物件的存留期和測試的 HRESULT 值來判斷作業是否成功或失敗。 已成功使用 WRL,您必須小心遵循這些規則和技術。

Visual C++ 元件擴充功能 (C++/CX) 是高階,以語言為基礎的方式使用 Windows 執行階段 元件。 WRL 和 C++/CX 透過自動代表您執行您的環境維護工作來簡化Windows 執行階段 的程式碼。

WRL 和 C++/CX 提供不同的優點。 您可以使用 WRL 而不是 C++/CX的原因如下:

  • WRL 在 Windows 執行階段 之中沒有加入太多順序二進位 Interfaces (ABI) 抽象性,讓您可以控制基礎程式碼來改進建置或使用 Windows 執行階段 API。

  • C++/CX 代表 COM HRESULT 值做為例外狀況。 如果您繼承了使用 COM 或沒有使用例外狀況的程式碼基底,您可能會發現 WRL 是較自然的方式與 Windows 執行階段 一起使用,因為您不需要使用例外狀況。

    注意事項注意事項

    WRL 使用 HRESULT 值,且不會擲回例外狀況。此外,WRL 使用智慧型指標和 RAII 模式來確保,在您的應用程式程式碼擲回例外狀況時物件正確被終結。如需智慧型指標和 RAII 的詳細資訊,請參閱 智慧型指標 (現代的 C++)物件擁有的資源 (RAII)

  • WRL 的用途和設計是被 Active Template Library (ATL) 所啟發,那是一組簡化 COM 物件的樣板架構的 C++ 類別。 由於 WRL 使用 Standard C++ 包裝 Windows 執行階段,您可以更容易移植和互動撰寫在 ATL 中的許多現有 COM 元件和Windows 執行階段。 如果您已經知道 ATL,您可能會發現 WRL 程式設計更容易。

使用者入門

這樣可幫助您取得同時使用 WRL 一起使用的某些資源。

WRL和 ATL比較

因為您可以用來建立小,快速的 COM 物件,WRL 類似 Active Template Library (ATL)。 WRL 和 ATL 也共用概念 (例如是在模組中的物件定義,明確註冊的介面,並使用 Factory開啟物件。 如果您熟悉 ATL,可能對 WRL 感到滿意。

WRL 支援對於 Windows 市集 應用程式所需的 COM 功能。 因此,,因為它省略直接支援 COM 功能 (例如,它與 ATL 不同:

  • 彙總

  • 內建實作

  • 雙重介面 (IDispatch)

  • 標準列舉程式介面

  • 連接點

  • Tear-Off 介面

  • OLE 內嵌

  • ActiveX 控制項

  • COM+

概念

WRL 提供代表某些基本概念的型別。 下列章節將說明此型別:

Hh438466.collapse_all(zh-tw,VS.110).gifComPtr

ComPtr 是表示由樣板參數指定之介面的智慧型指標型別。 使用 ComPtr 來宣告可以存取從介面衍生的物件的成員的變數。 ComPtr自動維護基礎介面指標上的參考次數並釋放介面,當參考計數歸零時 。

Hh438466.collapse_all(zh-tw,VS.110).gifRuntimeClass

RuntimeClass 表示繼承一組指定之介面的具現化類別。 RuntimeClass 物件可提供一或多個 Windows 執行階段 COM 介面提供支援的組合或對元件的弱式參考。

Hh438466.collapse_all(zh-tw,VS.110).gif模組

模組表示相關物件的集合。 Module 物件處理 Class Factory 物件,此物件建立物件和註冊,讓其他應用程式使用物件。

Hh438466.collapse_all(zh-tw,VS.110).gif回呼

回呼 函式建立成員函式是事件處理常式的物件 (回呼方法)。 使用 Callback 函式撰寫非同步作業。

Hh438466.collapse_all(zh-tw,VS.110).gifEventSource

EventSource 用來處理 委派 事件處理常式。 使用 WRL 實作委派,並使用 EventSource 加入、移除,並叫用委派。

Hh438466.collapse_all(zh-tw,VS.110).gifAsyncBase

AsyncBase 提供代表 Windows 執行階段 非同步程式設計模型的虛擬方法。 覆寫這個類別的成員來建立可以開始,停止或檢查非同步作業進度的自訂類別。

Hh438466.collapse_all(zh-tw,VS.110).gifFtmBase

FtmBase代表無限制執行緒封送處理器物件。 FtmBase 建立全域介面表 (GIT),並協助管理封送處理和 Proxy 物件。

Hh438466.collapse_all(zh-tw,VS.110).gifWeakRef

WeakRef 是代表弱式參考的智慧型指標型別,其會參考可能是也可能不是可存取的物件。 WeakRef 物件可以只被 Windows 執行階段使用,而不是一般 COM。

WeakRef 物件通常代表其存在是由外部執行緒或應用程式控制項的物件。 例如, WeakRef 物件可以參考檔案物件。 在檔案開啟時, WeakRef 有效,而且參考的檔案是可存取的。 不過,只有在檔案關閉時, WeakRef 是無效,而且檔案無法存取。

相關主題

WRL 類別庫專案範本

說明如何存取 WRL 類別庫專案範本。 這個範本可協助簡化使用 Visual Studio 建立 Windows 執行階段 元件之工作。

依分類區分的重要 WRL 應用程式開發介面

反白顯示主要 WRL 型別、函式和巨集。

WRL 參考

包含關於 WRL 的參考資訊。

快速參考 (Windows 執行階段和 Visual C++)

簡要說明支援 Windows 執行階段的 C++/CX 功能。

使用 Visual C++ 中的 Windows 執行階段元件

示範如何使用 C++/CX以建立基本Windows 執行階段 元件。