Windows 编程概述(使用 C++)

您可以使用 C++ 创建几大类 Windows 应用程序。每个都有自己的编程模型和一组 Windows 特定的库,但是 C++ 标准库和第三方 C++ 库可以在其中任何一个中使用。

本节讨论如何使用 Visual Studio 和 MFC/ATL包装器库创建 Windows 程序。有关 Windows 平台本身的文档,请参阅 Windows 文档

1. 命令行(控制台)应用程序

C++ 控制台应用程序从控制台窗口中的命令行运行,并且只能显示文本输出。有关更多信息,请参见创建 C++ 控制台应用程序项目

2. 本机桌面客户端应用程序

本机桌面客户端应用程序是使用原始本机 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++ 用于桌面应用程序:

  • 精确控制内存使用
  • 最经济的耗电量
  • 用于一般计算的 GPU 用途
  • 访问 DirectX
  • 大量使用标准 C++ 库

也可以将 C++ 的功能和效率与 .NET 编程相结合。您可以在 C# 中创建用户界面,并使用 C++/CLI 使应用程序能够使用本机 C++ 库。有关更多信息,请参见使用 C++/CLI 进行 .NET 编程

3. COM 组件

组件对象模型(COM)是一种规范,使使用不同语言编写的程序可以相互通信。许多 Windows 组件都实现为 COM 对象,并遵循标准的 COM 规则进行对象创建、接口发现和对象销毁。从 C++ 桌面应用程序使用 COM 对象相对简单,但是编写自己的 COM 对象则更为高级。活动模板库(ATL)提供了简化 COM 开发的宏和帮助程序功能。有关更多信息,请参见 ATL COM 桌面组件

4. 通用 Windows 平台应用程序

通用 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++ 并提供更快的性能。

5. 桌面桥

在 Windows 10 中,您可以将现有的桌面应用程序或 COM 对象打包为 UWP 应用程序,并从现代 Windows API 集添加 UWP 功能(如触摸或调用API)。您还可以将 UWP 应用添加到 Visual Studio 中的桌面解决方案,并将它们打包在一起在一个包中,并使用 Windows API 在它们之间进行通信。

Visual Studio 2017 15.4 版和更高版本允许您创建 Windows 应用程序打包项目,以大大简化打包现有桌面应用程序的工作。桌面应用程序可以使用的注册表调用或 API 受到一些限制。但是,在许多情况下,可以在应用程序包中运行时创建备用代码路径以实现相似的功能。有关更多信息,请参见 Desktop Bridge

6. 游戏

DirectX 游戏可以在 PC 或 Xbox 上运行。有关更多信息,请参见 DirectX 图形和游戏

7. SQL Server 数据库客户端

若要从本机代码访问 SQL Server 数据库,请使用 ODBC 或 OLE DB。有关更多信息,请参见 SQL Server Native Client

8. Windows设备驱动程序

驱动程序是低级组件,使来自硬件设备的数据可供应用程序和其他操作系统组件访问。有关更多信息,请参见 Windows Driver Kit(WDK)

9. Windows 服务

Windows 服务是可以在很少或没有用户交互的情况下在后台运行的程序。这些程序在 UNIX 系统上称为守护程序。有关更多信息,请参见服务

10. SDK、库和头文件

Visual Studio 包括 C 运行时库(C Runtime Library,CRT), C++ 标准库和其他 Microsoft 特定的库。包含用于这些库的头文件的文件夹大多数位于 Visual Studio 安装目录下的 \VC\folder 中。Windows 和 CRT 头文件位于 Windows SDK 安装文件夹中。

Vcpkg 软件包管理器使您可以方便地为 Windows 安装数百个第三方开源库。

Microsoft 库包括:

  • Microsoft 基础类(MFC):一种用于创建传统 Windows 程序(尤其是企业应用程序)的面向对象的框架,这些程序具有丰富的用户界面,这些用户界面具有按钮,列表框,树视图和其他控件。有关更多信息,请参见 MFC 桌面应用程序
  • 活动模板库(ATL):一个用于创建 COM 组件的功能强大的帮助器库。有关更多信息,请参见 ATL COM 桌面组件
  • C++ AMP( C++ 加速大规模并行):一个库,可在 GPU 上实现高性能的常规计算工作。有关更多信息,请参见 C++ AMP( C++ 加速大规模并行)
  • 并发运行时:一个用于简化多核和多核设备的并行和异步编程工作的库。有关更多信息,请参见并发运行时

许多 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开发人员中心。

11. 开发工具

Visual Studio 包括用于本机代码的强大调试器,静态分析工具,图形调试工具,功能齐全的代码编辑器,对单元测试的支持以及许多其他工具和实用程序。有关更多信息,请参见 Visual Studio 开发入门Visual Studio 中的 C++ 开发概述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值