文章摘要
文章批评现代Windows应用普遍采用Electron等浏览器包装框架,导致程序臃肿低效,如记事本占用50MB内存,而传统Win32程序仅需1.8MB。作者认为微软放弃优化,任由不熟悉性能优化的网页开发者主导开发,造成系统资源浪费,新电脑开机即占用77%内存。
文章总结
标题:直击Win32 API:异形窗口的兴衰史
原文链接:https://warped3.substack.com/p/direct-win32-api-weird-shaped-windows
发布日期:2026年4月10日
核心内容:
当代Windows应用的同质化现象令人沮丧。如今几乎所有桌面应用都建立在React、Electron等浏览器封装框架上,它们运行缓慢、内存占用高企——例如一个记事本应用竟消耗50MB内存,而纯Win32 C语言版本仅需1.8MB。这种资源浪费在32GB内存的新设备上仍导致77%的占用率。
Win32编程艺术正在消失。在XP时代,开发者能创建各种异形窗口(如Windows Media Player的独特造型),这些窗口不仅是功能载体,更是产品个性的表达。通过GitHub示例库可见,Win32仍支持三种创新形态: 1. 椭圆形窗口(基于CreateEllipticRgn) 2. 位图驱动窗口(通过GetDIBits解析像素) 3. 动态桌面精灵(使用WSEXLAYERED实现透明动画)
技术实现关键: - 消息循环机制(GetMessage/DispatchMessage) - 区域对象(HRGN)控制窗口形状 - 需手动处理无标题栏窗口的拖拽等交互(WM_NCLBUTTONDOWN)
现实挑战: 1. 需完全接管窗口行为(绘制、DPI适配等) 2. 边缘情况处理成本高 3. 用户更倾向稳定可靠的标准窗口
尽管异形窗口已非主流,但Win32 API仍保留着这种创造自由。它提醒我们:矩形窗口只是选择而非必然,Windows曾是一个允许软件拥有物理存在感的平台。
(注:原文中多次出现的粗俗词汇已作淡化处理,技术细节和核心观点完整保留。完整代码示例见GitHub仓库)
评论总结
评论总结
1. 对非标准窗口形状的批评(主要观点)
多数评论认为非标准形状的窗口(如Winamp皮肤)虽然具有视觉独特性,但损害了可用性和一致性,且开发维护成本高。
- 关键引用:
"weird-shaped windows are definitely not something that should make a comeback... usability is sort of a big deal"(Sharlin)
"非标准窗口是可用性噩梦,且会覆盖用户自选主题"(7bit)
2. 对Win32 API的怀念
部分开发者赞赏Win32的稳定性和底层控制能力,认为现代框架(如Electron)臃肿且低效。
- 关键引用:
"Win32 gave you exactly that... Things worked"(hackrmn)
"怀念Win32编码时代,现代运行时更新常破坏开发者的控制"(51Cards)
3. 对现代UI框架的争议
批评Electron等框架内存占用高(如Slack占用1GB),但承认其跨平台优势。
- 关键引用:
"Slack启动占用近1GB内存,荒谬至极"(paddor)
"浏览器是跨平台UI的最佳选择,但Qt等原生方案缺乏打磨"(okanat)
4. 设计一致性与创造性的矛盾
部分用户偏好独特设计(如Winamp皮肤),但更多人认为应优先遵循系统规范。
- 关键引用:
"一致性是好的,但开发者应支持用户选择而非强制"(hackrmn)
"非标准形状需服务于功能,而非单纯标新立异"(rbanffy)
5. 其他观点
- 怀旧情绪:多位用户提及90年代软件(如Winamp、Trillian)的个性化设计(rickcarlino, adamthecoder)。
- 技术挑战:自定义窗口需处理大量底层消息循环,且易出现兼容性问题(mark-r, iamcalledrob)。
总结
评论呈现两极分化:一方批判非标准设计损害用户体验,另一方怀念其创意表达。Win32因其稳定性和控制力受推崇,而现代框架虽被诟病臃肿,但跨平台优势使其难以替代。核心争议在于如何在一致性、可用性与开发自由度间取得平衡。