在 Surface Laptop —— 这台 Windows 小本子成了我重新拥抱微软技术生态的起点。
在配置完开发环境后,我开始对微软这家公司产生兴趣,尤其想了解它在桌面开发上的技术演进。我决定从操作系统版本、开发接口(API)、工具链(MSVC/MFC)、到现代框架(WinRT/WinUI3)一一探究。
🕰 Windows 的版本时间线
我整理了一份参考时间轴:
- 1993:Windows NT 发布
- 1995:Windows 95 发布
- 2001:Windows XP
- 2009:Windows 7
- 2015:Windows 10
- 2021:Windows 11
我最喜欢的是 Windows 10,它已经陪伴了我七八年。我的 Surface 上运行的也是 Win10 —— 熟悉又稳定。
Windows 10 22H2 是一项精简更新,聚焦于安全性、可靠性和兼容性。家庭和专业版的支持将持续至 2025 年 10 月 14 日。
📄 更新公告
📄 版本信息
🪟 Windows API 与 Win32:冰山之上的插座
1985 年,Windows 1.0 诞生,是 MS-DOS 的图形前端。与此同时,Windows API 的雏形也出现了。
后来我看了一段非常形象的视频:API 就像插座,你只要插进去电器就能用,电是怎么来的你不用管。Win32 API 也正是这样:它提供了连接系统能力的插孔,而开发者只需遵循规范使用即可。
Win32 是微软为 32 位 Windows 系统提供的核心 API,包含:
kernel32.dll
:内核功能user32.dll
:用户界面窗口处理gdi32.dll
:图形设备接口
这套接口从 Windows 95 一直沿用至今(包括 Win11),几乎构成了整个 Windows 桌面生态的基石。
⚙️ WinRT:现代桌面开发的新方式
WinRT(Windows Runtime)起源于 Windows 8,是微软为现代化应用(UWP 等)设计的 API 框架。它基于 COM,对 C++ 开发者更加友好,也支持 C#、JS 等语言调用。
📺 官方介绍视频
📄 C++/WinRT 文档
特点总结:
- 面向对象封装
- 支持现代 C++ 语法(如 C++17)
- 生成的二进制体积更小
- 兼容 UWP 和 WinAppSDK
🧱 Win32 vs WinRT:两种世界观
属性 | Win32 API | WinRT API |
---|---|---|
出现年代 | Windows 3.x 起 | Windows 8 起 |
编程范式 | 基于 C,过程式 | 基于 COM,面向对象 |
支持语言 | C/C++ 为主 | C++、C#、JS 等 |
安全模型 | 宽松 | 沙箱隔离,权限控制 |
典型场景 | 桌面传统程序 | 现代通用应用、WinUI 桌面程序 |
我虽然对 UWP 的打包和部署方式兴趣不大,但 WinRT + C++ 的组合令人兴奋 —— 它让桌面开发更具结构性与现代感。
🛠 MSVC 与 MFC:了解微软工具栈
MSVC 是 Visual Studio 中的 C++ 编译器套件,为 Windows 开发提供了完整的工具链。
MFC(Microsoft Foundation Classes)
MFC 是微软最早为 Windows C++ 开发封装 API 的类库,具有以下特点:
- 封装消息循环与事件机制
- 支持文档-视图结构(Doc/View)
- 可快速开发传统桌面 UI 程序
📄 MFC 官方文档
虽然 MFC 被许多现代项目所放弃,但它的架构思路和对 API 的封装仍有学习价值。
✨ WinUI3:现代 UI 框架的未来
WinUI3 是微软推出的新一代桌面 UI 框架,作为 WinAppSDK 的组成部分,它不再依赖系统版本,与操作系统彻底解耦。
特点包括:
- 更现代的控件样式
- 跨版本兼容(支持 Win10/11)
- 更灵活的部署方式
- 与 C++/WinRT 配合良好
推荐视频:一文搞懂 Windows 开发框架演进
🧠 总结:对历史的回顾,是理解系统的起点
从 Surface 的选择,到 MFC 的好奇,再到 API 架构的比较,我的这次“Windows 探索之旅”并非为了立刻开发什么应用,而是出于对底层系统演进的兴趣。
开发不只是写代码,更是理解背后的架构、厂商的技术哲学,以及一代代开发者留下的轨迹。
📝 后记:这篇文章写于我重新开始学习 C++ 的阶段。那时的我对系统开发还知之甚少,却被微软技术体系的演进历史深深吸引。也许正是这份出于好奇的探索,构成了我技术旅程中最纯粹的起点。