
直接調用 Win32 API、奇形怪狀的視窗,以及它們為何大多消失了
我受夠了那些千篇一律且臃腫的網頁套殼應用程式,這篇文章探討了如何透過直接調用 Win32 API 來重拾對視窗控制的藝術,並解釋了那些充滿個性的奇形怪狀視窗為何在現代開發中逐漸消失。
背景
本文探討了 Win32 API 程式設計的沒落,以及過去 Windows XP 時代盛行的「非規則形狀視窗」為何逐漸消失。作者批評現代桌面應用程式過度依賴 Electron 或 React 等網頁技術框架,導致記憶體占用過高且缺乏個性,並透過技術範例展示了直接調用 Win32 API 如何能以極低資源實現具備獨特視覺身分的視窗介面。
社群觀點
針對作者對現代 UI 框架的抨擊,Hacker News 社群展現了兩極化的反應。部分資深開發者深有共鳴,認為 Win32 API 雖然充滿歷史包袱,但其作為 Windows 開發的「組合語言」層級,提供了極高的穩定性與控制權。他們感嘆微軟內部 .NET 團隊與 C++ 團隊的長期內鬥,導致開發者在選擇原生開發工具時感到困惑與挫折,最終轉向雖然臃腫但跨平台一致性較高的網頁技術。
然而,對於作者懷念的「奇形怪狀視窗」,多數留言者持保留甚至反對意見。反對者指出,這些追求「身分認同」的設計往往是可用性與無障礙環境的災難。標準化的矩形視窗與系統控制項雖然顯得單調,卻能確保螢幕閱讀器、高對比模式以及不同解析度下的縮放(HiDPI)能正常運作。許多留言提到,過去那些外型酷炫的媒體播放器或硬體控制面板,往往是系統中最難用且最占空間的肥大軟體。
此外,關於效能與記憶體占用的爭論也十分激烈。有觀點認為,現代作業系統的高記憶體占用部分源於快取機制,強調「沒被使用的記憶體就是浪費」。雖然 Electron 確實沉重,但它解決了字體渲染、多媒體處理與硬體加速等極其複雜的平台相容性問題,這些細節若要用純 Win32 API 完美達成,開發成本將高得令多數企業無法接受。
最後,社群也反思了軟體開發模式的轉變。過去軟體由小型團隊開發後可穩定運行多年,因此有空間雕琢如「擬物化」或「特殊形狀」的細節;現代軟體則追求快速迭代與大規模協作,扁平化與模組化的設計更符合當前「快閃式」的開發節奏。這種從「手工雕刻家具」轉向「組合式家具」的演變,雖失去了藝術性,卻是市場規模化後的必然結果。
延伸閱讀
在討論中,有使用者詢問其他作業系統是否具備類似功能。留言指出 X11 透過 X Shape Extension 支援非矩形視窗,而 Wayland 亦有相關的通訊協定實現。此外,留言也分享了早期 macOS 上的經典案例,如 CD 燒錄軟體 Disco,其在運作時會產生半透明的煙霧特效,曾被賈伯斯在演講中公開稱讚。針對介面設計的一致性爭論,則有開發者推薦閱讀「Bring back Idiomatic Design」與「Make macOS consistently bad unironically」等文章,進一步探討原生設計與跨平台設計之間的拉鋸。