API
对于程序员来说,操作系统的功能完全由API来定义。API涵盖了应用程序所能调用的全部操作系统函数,以及相关的数据类型和结构。在Windows 中,API还隐含了一种特殊的程序结构。
详情见21.WindowsAPI
可选,现在不用API也可以编程
开发语言
究竟用哪种方式编写Windows应用程序最好,其实并无一定之规。应用程序本身的特性应该是决定采用何种编程工具的最主要因素。但是无论将来你采用什么编程工具,通过了解Windows API 从而深入理解Windows的工作原理,这本身就具有很重要的意义。Windows是一个非常复杂的系统,在API之上加一层编程语言并不能消除其复杂性,最多不过是把复杂性隐藏起来而已。说不定什么时候,Windows复杂的那一面迟早会蹦出来拖你的后腿,懂得API能让你到时候更快地挣脱困境。
在基本Windows API之上的任何软件层或多或少都会限制你使用Windows的全部功能。比如,你或许发现采用Visual Basic来编写你的应用程序非常理想,但是就有那么一两项非常基本的功能Visual Basic无法支持。往往这种时候,你就非得要调用基本API。作为Windows程序员,我们的活动空间完全由API来规范,再没有什么其他方式能比直接调有API更有效、更灵活多样了。
MFC的问题尤其严重。尽管它极大地简化了某些工作(如OLE),但我经常发现自己会在某些其他功能上摔跟斗(比如让文档/视图的体系结构按照我的设想来工作)。并非像很多人一厢情愿期望的那样,MFC 始终没有能成为 Windows 编程的万灵宝药,几乎也没人认为它是一种很好的面向对象的设计模型。MFC 程序员通常受益最多的是对他们用的类定义的理解,他们总是经常不断地在查询MFC的源代码。而了解Windows APl的好处之一就是能帮助你读懂MFC源代码。
开发方式
可以混合使用平台工具或语言,比如界面和大部分不影响效率的功能是用C#实现的。非常影响效率的部分功能用c++的实现,并作为程序的动态链接库调用。甚至界面用网页实现页面,CSharp实现后台。
VisualC++
-
可以仅使用 C 和 WindowsAPI:最经典的开发方式。更有利于理解Windows编程原理。但是开发效率偏低,学习用。
-
可以使用 C++ 和 WindowsAPI:
-
可以使用 C++ 和框架 比如 MFC\QT\ATL…
.NET
- 可以仅使用C#:开发效率高,商业
Web
- Electron:Chromium负责渲染、Node.js负责后台
1、Web技术:Electron嵌入了Chromium和Node.js,使Web开发人员能够创建桌面应用程序。
2、跨平台:与macOS、Windows和Linux兼容,Electron应用程序可以在所有支持的架构上的三个平台上运行。
3、开源:Electron是一个开源项目,由OpenJS基金会和一个活跃的贡献者社区维护。
4、原理:使用Electron的主要进程api与操作系统的接口交互。自定义应用程序窗口外观、控制应用程序菜单或通过对话框或通知提醒用户。
5、示例项目:VSCode、Obsidian、思源笔记、Notion、Figma、Postman