赞
踩
您可以使用 C++ 创建几大类 Windows 应用程序。每个都有自己的编程模型和一组 Windows 特定的库,但是 C++ 标准库和第三方 C++ 库可以在其中任何一个中使用。
本节讨论如何使用 Visual Studio 和 MFC/ATL包装器库创建 Windows 程序。有关 Windows 平台本身的文档,请参阅 Windows 文档。
C++ 控制台应用程序从控制台窗口中的命令行运行,并且只能显示文本输出。有关更多信息,请参见创建 C++ 控制台应用程序项目。
本机桌面客户端应用程序是使用原始本机 Windows C APIs 或组件对象模型(COM)APIs 来访问操作系统的 C 或 C++ 窗口应用程序。这些 API 本身主要是用 C 编写的。创建本地桌面应用程序的方法不止一种:您可以直接使用 Win32 APIs
进行编程,并使用处理操作系统事件的 C 样式消息循环。或者,您可以使用 Microsoft Foundation Classes(MFC)
进行编程,该基础类是包装 Win32 的轻量级面向对象的 C++ 库。与通用 Windows 平台(Universal Windows Platform,UWP)相比,这两种方法都没有被认为是“现代”的,但是两种方法仍得到完全支持,并且当今世界上有数百万行代码在运行。在窗口中运行的 Win32 应用程序要求开发人员在 Windows 过程函数中显式使用 Windows 消息。尽管它是 Win32 这个名称,但 Win32 应用程序可以编译为 32 位(x86)或 64 位(x64)二进制文件。在 Visual Studio IDE 中,术语 x86 和 Win32 是同义词。
要开始使用传统的 Windows C++ 编程,请参阅 Win32 和 C++ 入门。在您对 Win32 有了一些了解之后,将更容易了解 MFC 桌面应用程序。有关使用复杂图形的传统 C++ 桌面应用程序的示例,请参见 Hilo:为 Windows 开发 C++ 应用程序。
C++ 或 .NET?
通常,与 Win32 或 MFC 相比,使用 C#
进行 .NET 编程的复杂性较低,出错的可能性较小,并且具有更现代的面向对象的 API。在大多数情况下,其性能绰绰有余。.NET
具有用于丰富图形的 Windows Presentation Foundation(WPF),并且您可以使用 Win32 和现代 Windows Runtime API。通常,我们建议在需要时将 C++ 用于桌面应用程序:
也可以将 C++ 的功能和效率与 .NET 编程相结合。您可以在 C# 中创建用户界面,并使用 C++/CLI 使应用程序能够使用本机 C++ 库。有关更多信息,请参见使用 C++/CLI 进行 .NET 编程。
组件对象模型(COM)是一种规范,使使用不同语言编写的程序可以相互通信。许多 Windows 组件都实现为 COM 对象,并遵循标准的 COM 规则进行对象创建、接口发现和对象销毁。从 C++ 桌面应用程序使用 COM 对象相对简单,但是编写自己的 COM 对象则更为高级。活动模板库(ATL)提供了简化 COM 开发的宏和帮助程序功能。有关更多信息,请参见 ATL COM 桌面组件。
通用 Windows 平台(UWP)是现代的 Windows API。 UWP 应用程序可在任何 Windows 10 设备上运行,将 XAML 用于用户界面,并且具有完全触摸功能。有关 UWP 的更多信息,请参阅什么是通用 Windows 平台(UWP)应用程序?和 Windows Universal Apps 指南。
对 UWP 的原始 C++ 支持包括(1) C++/CX(带有语法扩展的 C++ 方言)或(2)Windows Runtime Library(WRL),它基于标准 C++ 和COM。目前仍然支持 C++/CX 和 WRL。对于新项目,我们建议使用 C++/WinRT,它完全基于标准 C++ 并提供更快的性能。
在 Windows 10 中,您可以将现有的桌面应用程序或 COM 对象打包为 UWP 应用程序,并从现代 Windows API 集添加 UWP 功能(如触摸或调用API)。您还可以将 UWP 应用添加到 Visual Studio 中的桌面解决方案,并将它们打包在一起在一个包中,并使用 Windows API 在它们之间进行通信。
Visual Studio 2017 15.4 版和更高版本允许您创建 Windows 应用程序打包项目,以大大简化打包现有桌面应用程序的工作。桌面应用程序可以使用的注册表调用或 API 受到一些限制。但是,在许多情况下,可以在应用程序包中运行时创建备用代码路径以实现相似的功能。有关更多信息,请参见 Desktop Bridge。
DirectX 游戏可以在 PC 或 Xbox 上运行。有关更多信息,请参见 DirectX 图形和游戏。
若要从本机代码访问 SQL Server 数据库,请使用 ODBC 或 OLE DB。有关更多信息,请参见 SQL Server Native Client。
驱动程序是低级组件,使来自硬件设备的数据可供应用程序和其他操作系统组件访问。有关更多信息,请参见 Windows Driver Kit(WDK)。
Windows 服务是可以在很少或没有用户交互的情况下在后台运行的程序。这些程序在 UNIX 系统上称为守护程序。有关更多信息,请参见服务。
Visual Studio 包括 C 运行时库(C Runtime Library,CRT), C++ 标准库和其他 Microsoft 特定的库。包含用于这些库的头文件的文件夹大多数位于 Visual Studio 安装目录下的 \VC\folder 中。Windows 和 CRT 头文件位于 Windows SDK 安装文件夹中。
Vcpkg 软件包管理器使您可以方便地为 Windows 安装数百个第三方开源库。
Microsoft 库包括:
许多 Windows 编程方案也需要 Windows SDK,该 Windows SDK 包含允许访问 Windows 操作系统组件的头文件。默认情况下,Visual Studio 将 Windows SDK 安装为 C++ 桌面工作负载的组件,从而可以开发通用 Windows 应用程序。要开发 UWP 应用,您需要 Windows SDK 的 Windows 10 版本。有关信息,请参阅 Windows 10 SDK。(有关 Windows 早期版本的 Windows SDK 的更多信息,请参阅 Windows SDK 档案)。
Program Files (x86)\Windows Kits 是已安装的所有 Windows SDK 版本的默认位置。
Xbox 和 Azure 等其他平台也可能需要安装自己的 SDK。有关更多信息,请参见 DirectX 开发人员中心和Azure开发人员中心。
Visual Studio 包括用于本机代码的强大调试器,静态分析工具,图形调试工具,功能齐全的代码编辑器,对单元测试的支持以及许多其他工具和实用程序。有关更多信息,请参见 Visual Studio 开发入门和 Visual Studio 中的 C++ 开发概述。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。