許多初學者以為 C 語言只能跑在黑底白字的終端機裡。事實上,從 Windows 95 時代的經典應用程式,到現代跨平台的專業軟體,C/C++ 都是圖形介面開發的主力軍。關鍵在於選對「武器」。
| 框架 | 類型 | 平台 | 學習曲線 | 授權 | 典型應用 |
|---|---|---|---|---|---|
| Win32 API / MFC | 原生 / 輕量封裝 | Windows | 陡峭 / 中等 | 專有 / 免費 | Office、Visual Studio、經典 Win32 應用 |
| Qt | 重量級 C++ 框架 | 全平台 | 中等 | LGPL / 商業 | Wireshark、VLC、Telegram Desktop、汽車儀表盤 |
| GTK | C 原生物件系統 | Linux/Windows/macOS | 中等 | LGPL | GIMP、GNOME 桌面、Inkscape |
| wxWidgets | 薄封裝原生控制項 | 全平台 | 中等 | wxWindows Library Licence | Code::Blocks、Audacity、FileZilla |
| Dear ImGui | 即時模式 GUI | 全平台 | 極低 | MIT | 遊戲編輯器、調試工具、即時視覺化 |
| IUP / Nuklear / microgui | 輕量 C 庫 | 跨平台 | 低 | MIT / zlib | 嵌入式裝置、小型工具 |
有讀者問:「MFC 是函數嗎?」其實 MFC (Microsoft Foundation Classes) 是 C++ 類別庫,它將龐雜的 Win32 API 以物件導向方式封裝:
CWnd、CDialog、CFrameWnd、CView…CDC、CPen、CBrush、CFont…CArray、CList、CMap、CString…掌握 MFC 核心在於理解 文檔/視圖架構、訊息映射、動態建立、序列化 等機制。雖然微軟已停止大版本更新,但現存海量企業級專案仍在維護,就業市場依然有需求。
WNDCLASS、CreateWindow、GetMessage/DispatchMessage 迴路。避坑指南
❌ 不要一上來就用 C 語言硬寫 Win32 API 做複雜 UI,開發效率極低。
❌ 不要混用多種 GUI 庫(如同一專案同時用 MFC 和 Qt),符號衝突、記憶體模型不一致會讓你崩潰。
✅ 確定目標平台、授權需求、團隊技術棧後,堅持單一技術棧深耕。