现在啊,好多搞桌面软件的人都去用Web、Electron,甚至是Tauri了,都不愿意碰Windows原生开发了,这事儿挺让人觉得惋惜的,毕竟以前大家还是挺爱那种用Visual C++、写写窗口程序的日子的,那时候特好玩。我也能理解,以前看《Beginning Visual C++6》的时候,那书不光教会我敲代码,还让我觉得电脑这东西不是个冷冰冰的机器,而是个能被我操控的家伙。最近我就打算捡起这股老情怀,试着做了个小工具叫DisplayBlackout,功能挺简单,就是玩游戏的时候让左右两边的显示器黑掉,免得眼晕。本来以为这活儿挺好干的,结果真上手就发现Windows原生开发这坑太深了。你看Windows开发生态经历了多少折腾啊,从Win32API到MFC,再到后来的.NET、WPF、WinRT、UWP,一直折腾到现在的WindowsAppSDK和WinUI3。每一次换代都说未来来了,但最后发现自己还是得去老API里找答案。这种永远在重写的感觉让大家对新技术的信心都慢慢没了。我这一次用的是WindowsAppSDK和WinUI3,心想这回终于能享受到现代化开发的便利了吧?谁承想还是得靠P/Invoke来干活儿。监听显示器变化、弄个无边框窗口、弄个全局快捷键啥的,都得回到老API那一套去。真是让人搞不懂:难道追求现代化,反而把以前的方便劲儿都给弄丢了? 更让人难受的是C#,虽然是微软自家的语言,按理说应该跟平台深度配合吧?可实际开发中总遇见各种Interop的问题,让人感觉力不从心。哪怕有CsWin32这种现代工具帮忙减轻了点痛苦,根本问题还是没解决。就连UI数据绑定这种老毛病,C#也没能拿出多好的招数来。等到真的做完了才发现,怎么把这东西发出去也是个大难题。微软现在推的MSIX是挺规范的分法儿,可对于咱们个人开发者来说,签代码的费用和手续太麻烦了。这就导致哪怕工具功能挺全乎的小玩意儿也容易因为不够特别而被拒之门外。 所以啊,现在越来越多的开发者跑去选Electron或者Tauri了。其实也不是大家不想做原生应用了,纯粹是因为Windows平台这摊子事儿太复杂太让人崩溃了。真要说Windows原生开发还有没有希望?我觉得还是有希望的,只要微软能好好听听开发者的声音,把基础能力补齐了,别老是几年一大变就好了。总之一句话吧:现在还肯踏踏实实做Windows原生应用的人啊,不是他们不懂技术的原因,恰恰是因为懂太多了才知道这条路有多难走多曲折。希望以后能有更多改进吧,让Windows开发这行重新活泛起来、有活力才行。