C++/WinRT

C++/WinRT 是完全標準現代的 Windows 執行階段 (WinRT) API 的 C++17 語言投影,僅實作為標頭檔案式程式庫,以及設計用來提供您現代化 Windows API 的第一級存取。 使用 C++/WinRT,您可以撰寫及取用使用任何符合標準 C++17 編譯器的 Windows 執行階段 API。 Windows SDK 包含 C++/WinRT;其在版本 10.0.17134.0 (Windows 10,版本 1803 ) 中引進。

C++/WinRT 適用於任何對寫出漂亮且快速的 Windows 程式碼感興趣的開發人員。 原因如下。

C++/WinRT 的案例

 

C++ 程式設計語言同時用於企業和獨立軟體廠商 (ISV) 區段,適用於需要高正確性、品質和效能價值的應用程式。 例如:系統程式設計;資源受限內嵌和行動裝置系統;遊戲和圖形;裝置驅動程式;以及業界、科學和醫療應用程式等等。

從語言的觀點來看,C++ 向來與類型豐富且輕量的撰寫和使用抽象概念有關。 但因為原始指標、原始迴圈和詳細的記憶體配置與 C++98 發行,語言有了大幅度的變更。 現代化 C++ (從 C++ 11 後續版本) 是關於清楚運算式的想法、簡單、可讀性和較低引入錯誤的可能性。

若要使用 C++ 撰寫和取用Windows API,有 C++/WinRT。 這是 Microsoft 針對 C++/CX 語言投影和 Windows 執行階段 C++ 範本庫 (WRL) 建議的替代方案。

當您使用 C++/WinRT 時,使用標準 C++ 資料類型、演算法及關鍵字。 投影會有自己的自訂資料類型,但在大部分案例中,您不需要了解它們因為它們從標準類型提供適當轉換,以及提供適當轉換至標準類型。 如此一來,可以繼續使用您已經習慣使用的標準 C++ 語言功能,以及您已經擁有的原始碼。 C++/WinRT 可讓您輕鬆地在任何 C++ 應用程式中呼叫 Windows API,從 Win32 到 Windows AppSDK 到 UWP。

C++/WinRT 執行得更好,且比適用於 Windows 執行階段的任何其他語言選項所產生的二進位檔要小。 這甚至勝過直接使用 ABI 介面的手寫程式碼。 這是因為抽象概念使用現代化 C++ 慣用語法,Visual C++ 編譯器設計用來最佳化。 最新版的 Visual C++ 中包括神奇靜態、空白的基底類別、strlen elision,以及許多較新的最佳化,最新版特別針對 C++/WinRT 的效能做改善。

有一些方法可以將 C++/WinRT 逐步引進您的專案中。 您可以使用 Windows 執行階段元件,或可以與 C++/CX 相互操作。 如需詳細資訊,請參閱 C++/WinRT 與 C++/CX 之間的相互操作

如需移植至 C++/WinRT 的詳細資訊,請參閱這些資源。

另請參閱我可以在哪裡找到 C++/WinRT 範例應用程式?

C++/WinRT 相關主題

主題 說明
C++/WinRT 的簡介 C++/WinRT 簡介—適用于 Windows 執行階段 API 的標準 C++ 語言投影。
開始使用 C++/WinRT 為了加快使用 C + + / WinRT,本主題逐步解說一個簡單的程式碼範例。
C++/WinRT 的新功能 C++/WinRT 的新聞和變更。
常見問題集 有關於使用 C++/WinRT 撰寫及使用 Windows 執行階段 API 您可能會有的問題的解答。
疑難排解 無論您是剪下新的程式碼或移植現有的應用程式,本主題中的疑難排解問題和解決方式表格可能對您會很有幫助。
Photo Editor C++/WinRT 範例應用程式 Photo Editor 是 UWP 範例應用程式,展示使用 C++/WinRT 語言投影進行開發。 範例應用程式可讓您從圖片庫擷取相片,然後以混合的相片效果編輯所選的影像。
字串處理 使用 C++/WinRT,您可以使用標準 C++ 寬字串類型呼叫 Windows 執行階段 API,或可以使用 winrt::hstring 類型。
標準 C++ 資料類型與 C++/WinRT 使用 C++/WinRT,您可以使用標準 C++ 資料類型呼叫 Windows 執行階段 API。
Boxing 和 unboxing 值到 IInspectable 傳遞至預期 IInspectable的函式之前,必須先將純量或陣列值包裝在參考類別物件內。 該包裝程序稱為「boxing」值。
使用 C++/WinRT 取用 API 本主題示範如何取用 C++/WinRT API,無論 Windows、第三方元件廠商或您自己是否實作它們。
使用 C++/WinRT 撰寫 API 本主題示範如何直接或間接使用 winrt::implements 基礎結構撰寫 C++/WinRT API。
使用 C++/WinRT 處理錯誤 本主題討論使用 C++/WinRT 程式設計時處理錯誤的策略。
使用委派來處理事件 本主題示範如何註冊和撤銷使用 C++/WinRT 的事件處理委派。
撰寫事件 本主題示範如何撰寫包含引發事件的執行階段類別的 Windows 執行階段元件。 也示範使用元件和處理事件的應用程式。
使用 C++/WinRT 的集合 C++/WinRT 提供函式和基底類別,讓您想要實作及/或傳遞集合時省下許多的時間和精力。
並行和非同步作業 本主題示範的方式,您可以使用 C++/WinRT,同時建立及使用 Windows 執行階段非同步物件。
進階並行和非同步 在 C++/WinRT 中使用並行和非同步進階案例。
完成來源範例 示範如何撰寫及取用您自己的完成來源類別。
XAML 控制項;繫結至一個 C++/WinRT 屬性 可有效地繫結至 XAML 控制項屬性稱為「可觀察的」屬性。 本主題示範如何實作和使用可觀察屬性,以及如何將 XAML 控制項繫結至它。
XAML 項目控制項;繫結至一個 C++/WinRT 集合 可有效地繫結至 XAML 項目控制項的集合稱為「可觀察的」集合。 本主題示範實作和使用可觀察集合的方法,以及如何將 XAML 項目控制項繫結至它。
使用 C++/WinRT 的 XAML 自訂 (範本化) 控制項 本主題會逐步引導您完成使用 C++/WinRT 建立簡單自訂控制項。 您可以根據這裡的資訊,替自己建立功能豐富且可自訂的 UI 控制項。
將參數傳入到 ABI 界限 C++/WinRT 藉由在一般情況提供自動轉換,簡化將參數傳入 ABI 界線的過程。
使用 C++/WinRT 取用 COM 元件 本主題使用完整的 Direct2D 程式碼範例來示範如何使用 C++/WinRT 來取用 COM 類別和介面。
使用 C++/WinRT 撰寫 COM 元件 C++/WinRT 可協助您撰寫傳統的 COM 元件,因為它可協助您撰寫 Windows 執行階段類別。
從 C++/CX 移到 C++/WinRT 本主題說明將 C++/CX 專案中的原始程式碼移植到其在 C++/WinRT 中的對等項目時所涉及的技術詳細資料。
C++/WinRT 與 C++/CX 之間的相互操作 本主題示範可用於 C++/CXC++/WinRT 物件之間轉換的輔助函式。
C++/WinRT 與 C++/CX 之間的相互操作 這是一個與從 C++/CX 逐步移植至 C++/WinRT 相關的進階主題。 其會顯示平行模式程式庫 (PPL) 工作和協同程式在同一個專案中並存的方式。
從 WRL 移到 C++/WinRT 本主題示範如何將 Windows 執行階段 C++ 範本庫 (WRL) 程式碼移植到其在 C++/WinRT 中的對等項目。
將剪貼簿範例從 C# 移植到 C++/WinRT—案例研究 本主題會提供將其中一個通用 Windows 平台 (UWP) 應用程式範例C# 移植到 C++/WinRT 的案例研究。 您可以依照逐步解說移植自己範例,以了解如何移植並獲取經驗。
從 C# 移到 C++/WinRT 本主題詳細說明將 C# 專案中的原始程式碼移植到其在 C++/WinRT 中的對等項目時所涉及的技術詳細資料。
C++/WinRT 與 ABI 之間的相互操作 本主題示範如何在應用程式二進位介面 (ABI) 與 C++/WinRT 物件之間轉換。
C++/WinRT 中的強式和弱式參考 Windows 執行階段是參考計數式系統;在這樣的系統中,請務必了解強式和弱式參考的重要性以及之間的區別。
敏捷式物件 敏捷式物件是可以從任何執行緒中存取的一個。 C++/WinRT 預設為敏捷式,但您可以選擇退出。
診斷直接配置 本主題深入探討 C++/WinRT 2.0 功能,該功能可協助您診斷在堆疊上建立實作類型物件的錯誤,而不是使用 winrt::make 系列的協助程式。
適用於實作類型的擴充點 使用 C++/WinRT 2.0 中的這些擴充點,可以讓您延遲實作類型的解構、在解構期間安全地查詢,以及將進入和退出投影的方法加以連結。
基本 C++/WinRT Windows UI 程式庫 2 範例 (UWP) 本主題將逐步引導您完成將 Windows UI 程式庫的基本支援新增至 C++/WinRT UWP 專案的程式, (WinUI) 。 具體而言,本主題會處理適用于 UWP 應用程式的 WinUI 2。
使用 C++/WinRT 的 Windows 執行階段元件 本主題說明如何使用 C++/WinRT 來建立和使用Windows 執行階段元件,這是可從使用任何Windows 執行階段語言建置的通用Windows應用程式呼叫的元件。
撰寫 C# Windows 執行階段元件,以便從 C++/WinRT 應用程式使用 本主題將逐步引導您完成將簡單 C# 元件新增至 C++/WinRT 專案的程式。
Visual Studio C++/WinRT (natvis) 原生偵錯視覺效果 C++/WinRT Visual Studio 延伸模組 (VSIX) 可讓您Visual Studio原生偵錯視覺效果 (C++/WinRT 投影類型的 natvis) 。 這提供類似 C# 偵錯的體驗。
組態宏 本主題描述 C++/WinRT 組態宏。
C++/WinRT 命名慣例 本主題說明 C++/WinRT 已建立的命名慣例。

C++ 語言相關主題

主題 說明
值類別,以及其參考 本主題說明 C++ 中存在的各類值。 您必定聽說左值和右值,但還有其他種類的值。

重要 API