Windows C++ 傳統型應用程式型別

C++ 中的傳統型應用程式是一種原生應用程式,可以存取完整的 Windows API 集合,並在視窗或系統控制台中執行。 C++ 中的傳統型應用程式可以透過 Windows 11 在 Windows XP 上執行 (雖然 Windows XP 已不再正式支援,而且自那以後有許多新的 Windows API)。

C++ 的任何傳統型應用程式都可以使用 C 執行階段 (CRT)、標準程式庫類別和函式、COM 物件,以及統稱為 Windows API 的公用 Windows 函式。 如需 C++ 的 Windows 傳統型應用程式簡介,請參閱開始使用 Win32 和 C++

可以使用 C++ 建立多種廣泛類別的 Windows 應用程式,如下所述。 每個類別都有其程式設計模型和一組 Windows 特定程式庫。 C++ 標準程式庫和第三方 C++ 程式庫可用於其中任何一個類別。

如需 Windows 平台本身的文件,請參閱 Windows 文件

原生傳統型應用程式

原生傳統型用戶端應用程式Win32 應用程式,是以 C 或 C++ 撰寫的 Windows 傳統型應用程式,其使用原生 Windows C API 或元件物件模型 (COM) API CRT 和標準程式庫 API,以及第三方程式庫。 在視窗中執行的 Win32 應用程式需要開發人員在 Windows 程序函式內處理 Windows 訊息。 儘管名稱如此,Win32 應用程式可編譯為 32 位元 (x86) 或 64 位元 (x64) 二進位檔。 在 Visual Studio 整合式開發環境 (IDE) 中,x86 和 Win32 詞彙是同義字。

命令列 (主控台) 應用程式

C++ 主控台應用程式會從主控台視窗中的命令列執行,而且只能顯示文字輸出。

UWP 應用程式

通用 Windows 平台 (UWP) 是新式 Windows API。 UWP 應用程式在 Windows 11、Windows 10、XBox、Windows Phone、Surface Hub 和其他裝置上執行。 UWP 應用程式在使用者介面使用 XAML,並完全支援觸控。 傳統型應用程式與通用 Windows 平台 (UWP) 應用程式不同。

C++ 對 UWP 的原始支援包括 C++/CX (一種包含語法擴充的 C++ 方言) 或 Windows 執行階段程式庫 (WRL),後者是以標準 C++ 和 COM 為基礎。 C++/CX 和 WRL 仍受支援,但不建議用於新的開發。

對於新專案,我們建議使用 C++/WinRT,這完全是以標準 C++ 為基礎,且提供更快的效能。

C++/CLI 應用程式或元件使用 C++ 語法的擴充 (如 C++ 標準所允許) 來啟用 .NET 與原生 C++程式碼之間的互動。 C++/CLI 應用程式可以有原生執行的組件,以及可存取 .NET 基底類別庫的 .NET Framework 上執行的組件。 當原生 C++ 程式碼需要處理以 C# 或 Visual Basic 撰寫的程式碼時,C++/CLI 是慣用選項。 其目的是用於 .NET DLL,而不是用於使用者介面程式碼。

傳統型橋接器

在 Windows 10 和更新版本中,您可以將現有的傳統型應用程式或 COM 物件封裝為 UWP 應用程式。 它可以使用 UWP 功能,例如觸控,或從新式 Windows API 集合呼叫 API。 您也可以將 UWP 應用程式新增至 Visual Studio 中的桌面解決方案、將它們封裝在單一套件中,並使用 Windows API 在兩者之間通訊。

Visual Studio 2017 15.4 版和更新版本可讓您建立 Windows 應用程式封裝專案,以大幅簡化封裝現有傳統型應用程式的工作。 傳統型應用程式可以使用的登錄呼叫或 API 有一些限制。 不過,在許多情況下,您可以建立替代程式碼路徑,以在應用程式套件中執行時達到類似的功能。

C++ 還是 .NET?

一般而言,C# 中的 .NET 程式設計較不複雜、較不容易出錯,而且具有比 Win32 或 MFC 更現代化的物件導向 API。 在大部分情況下,其效能超出預期。

.NET 具有適用於豐富圖形的 Windows Presentation Foundation (WPF),而且您可以同時使用 Win32 和新式 Windows 執行階段 API。 一般情況下,建議在需要以下功能時,針對傳統型應用程式使用 C++:

  • 精確控制記憶體使用量
  • 以最經濟的方式耗用電源
  • 使用 GPU 進行一般運算
  • 存取 DirectX
  • 大量使用標準 C++ 程式庫

您也可以結合 C++ 與 .NET 程式設計的強大功能和效能。 您可以在 C# 中建立使用者介面,並使用 C++/CLI 讓應用程式取用原生 C++ 程式庫。

遊戲

DirectX 遊戲可以在電腦或 Xbox 上執行。

SQL Server 資料庫用戶端

若要從機器碼存取 SQL Server 資料庫,請使用 ODBC 或 OLE DB。

Windows 裝置驅動程式

驅動程式是低階元件,可讓應用程式和其他作業系統元件從硬體裝置存取資料。

Windows 服務

Windows 服務 是一種程式,可在背景中執行,且極少與使用者互動或沒有任何使用者互動。 這些程式稱為 UNIX 系統上的精靈

  • 如需詳細資訊,請參閱 服務

COM

元件物件模型 (COM) 是一種規格,可讓以不同語言撰寫的程式彼此交互操作。

許多 Windows 元件會實作為 COM 物件,並遵循標準 COM 規則來建立物件、介面探索和物件解構。 從 C++ 傳統型應用程式使用 COM 物件相當簡單,但撰寫自己的 COM 物件較進階。

Active Template Library (ATL) 提供簡化 COM 開發的巨集和協助程式函式。 如需詳細資訊,請參閱 ATL COM 桌面元件

MFC

MFC 應用程式是 Windows 傳統型應用程式,其使用 Microsoft Foundation Classes 來建立使用者介面。 MFC 應用程式也可以使用 COM 元件,以及 CRT 和標準程式庫 API。

MFC 透過視窗訊息循環和 Windows API 提供精簡的 C++ 物件導向包裝函式。 MFC 是建立含有許多使用者介面控制項或自訂使用者控制項的應用程式 (特別是企業型應用程式) 時的預設選項。

MFC 針對視窗管理、序列化、文字操作、列印作業和現代使用者介面項目 (例如功能區) 提供便利的協助程式類別。 若要有效使用 MFC,您應熟悉 Win32。

SDK、程式庫和標頭檔

Visual Studio 包含 C 執行階段程式庫 (CRT)、C++ 標準程式庫和其他 Microsoft 特定程式庫。 大多數包含這些程式庫的標頭檔的資料夾都位於 Visual Studio 安裝目錄的 \VC\ 資料夾中 (例如,C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.39.33519\include\)。 Windows 和 CRT 標頭檔位於 Windows SDK 安裝資料夾中 (例如,C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt\)

vcpkg 套件管理員可讓您輕鬆地安裝數百個適用於 Windows 的第三方開放原始碼程式庫。 如需詳細資訊,請參閱 vcpkg

Microsoft 程式庫包括:

  • Microsoft Foundation Classes (MFC):一種物件導向架構,用於建立具有豐富使用者介面 (例如按鈕、清單方塊、樹狀檢視和其他控制項) 的傳統 Windows 程式 (特別是企業應用程式)。 如需詳細資訊,請參閱 MFC Desktop Applications

  • Active Template Library (ATL):用於建立 COM 元件的強大協助程式庫。 如需詳細資訊,請參閱 ATL COM Desktop Components

  • C++ AMP (C++ Accelerated Massive Parallelism):可讓您在 GPU 上執行高效能通用計算工作的程式庫。 如需詳細資訊,請參閱 C++ AMP (C++ Accelerated Massive Parallelism)

  • 並行執行階段:可簡化多核心 (multicore) 和數個核心 (many-core) 裝置的平行和非同步程式設計工作的程式庫。 如需詳細資訊,請參閱並行執行階段

許多 Windows 程式設計案例也需要使用 Windows SDK,它包含了可讓您存取 Windows 作業系統元件的標頭檔。 根據預設,Visual Studio 會將 Windows SDK 安裝為 C++ 桌面工作負載的元件,這可實現 Windows 通用應用程式開發。 若要開發 UWP 應用程式,您需要 Windows 10 或更新版本的 Windows SDK。

  • 如需詳細資訊和下載連結,請參閱 Windows SDK
  • 如需舊版 Windows 之 Windows SDK 的詳細資訊,請參閱 Windows SDK 封存

您安裝的所有 Windows SDK 版本的預設位置為:Program Files (x86)\Windows Kits

開發工具

Visual Studio 含有功能強大的機器碼偵錯工具、靜態分析工具、圖形偵錯工具、全功能的程式碼編輯器、單元測試支援,以及許多其他工具和公用程式。

本節內容

連結 描述
逐步解說:建立 Windows 傳統型應用程式 (C++) 建立原生 Windows 傳統型應用程式。
如何:在 Windows 傳統型應用程式中使用 Windows SDK 包含將您的專案設定為使用 Windows SDK 建置的步驟。
逐步解說:建立標準 C++ 程式 建立 Windows 主控台應用程式。
逐步解說:在 C++ 中建立主控台計算機 建立簡單的 Windows 主控台應用程式。 Win32 (或 Win64) 主控台應用程式沒有自己的視窗和訊息迴圈。 這會在主控台視窗中執行,而且輸入和輸出都是透過命令列來處理。
部署原生傳統型應用程式 在 Windows 上部署原生應用程式。
逐步解說:建立和使用靜態程式庫 如何建立 .lib 二進位檔案。
Windows 傳統型精靈 使用精靈來建立新的 Windows 專案。
Active Template Library (ATL) 使用 ATL 程式庫在 C++ 中建立 COM 元件。
ATL 和 MFC 共用類別 使用在 ATL 和 MFC 中共用的類別,例如 CString
Microsoft Foundation Classes (MFC) 使用 MFC 建立具有對話方塊和控制項的大型或小型 Windows 應用程式
資料存取 OLE DB 和 ODBC
文字和字串 Windows 上的各種字串類型。
使用資源檔 如何將影像、圖示、字串資料表和其他資源新增至傳統型應用程式。
用於使用 DirectX 建立遊戲的資源 (C++) 在 C++ 中建立遊戲的內容連結。
標題 描述
Windows 開發 包含 Windows 應用程式開發介面和 COM 的相關資訊 (部分 Windows 應用程式開發介面和協力廠商 DLL 會實作為 COM 物件)。
Hilo:開發適用於 Windows 7 的 C++ 應用程式 說明如何建立豐富型用戶端 Windows 傳統型應用程式,這個應用程式會使用 Windows 動畫和 Direct2D 建立浮動切換式 (Carousel-based) 使用者介面。 自 Windows 7 以來,本教學課程未更新,但仍提供 Win32 程式設計的全面簡介。
使用 C++/CLI 進行 .NET 開發 建立原生 C++ 程式庫的包裝函式,讓其能夠與 .NET 應用程式和元件通訊。
適用於.NET 和 UWP 的元件延伸模組 C++/CX 和 C++/CLI 所共用之語法元素的參考。
Windows 通用應用程式 (C++) 使用 C++/CX 或 Windows 執行階段範本程式庫 (WRL) 撰寫 UWP 應用程式。
適用於 COM 與 .NET 的 C++ 屬性 使用 .NET 或 COM 進行僅限 Windows 程式設計的非標準屬性。

另請參閱

Visual Studio 中的 C++