目标:
- 写一些工具类的软件。比如,启动器。
- 写一些和系统交互比较多的软件。比如,输入法。
- 想要实践和理解 Windows 底层的窗口过程、消息机制。
- 想要了解一个 GUI 框架是在什么样的基础上完成的,GUI 能干什么、不能干什么。比如,自己动手写一个类似 GacUI 这样的 GUI 框架。
- 想要了解 Windows 从 Win32 时代到如今经历了这么多 GUI 框架,为什么 Win32 始终如一,在今天甚至借着 webview2 这个技术开发体验得到重生。
- 想要了解 DirectUI 是什么?QT 的一个个控件是如何绘制的?每一个控件是不是一个单独的窗口。
- Handle 是什么?
- 通过 C++ 可以在 Windows 上写何种类型的软件?
- COM 是什么?COM 过时了吗?我们打游戏经常遇到的 directx 和 COM 是什么关系?为什么 webview2 和 COM 耦合如此之深。
- 该如何在不借助任何三方框架的情况下,写一个尽可能接近原生的应用,比如:写一个 Neovim 的 GUI 前端(使用 directx 渲染),写一个 gpt 三方客户端(使用 C++ 和 webview2)。
可以看的材料:
- Microsoft MSDN。官方的文档。很多例子可以直接跑。
- Windows 核心编程(Jeffrey Richter)。
- COM本质论。
- COM原理与应用。
- The Old New Thing。
- Modern CMake for C++ 2nd Edition。我个人推荐使用 CMake 结合 pwsh7 来构建项目,很方便,然后调试的使用使用 VS2022(必须,很强大)。
- Windows classic samples。微软官方样例 GitHub Repo,很全,很有用。
总结: