機械系畢業專題急救:C 語言如何做介面?
純 C 語言(ANSI C)沒有內建 GUI 功能。在 Windows 上開發含選單、工具列的視窗程式,主流路徑有三條:
路徑一:Win32 API(純 C,學習曲線陡峭)
- 直接呼叫
CreateWindow、RegisterClass、GetMessage 等 API。
- 優點:無額外依賴、執行檔小、理解底層訊息機制。
- 缺點:程式碼冗長、需手動處理繪圖、字型、佈局,適合有時間深入鑽研者。
路徑二:MFC (Microsoft Foundation Classes)(C++,視覺化開發)
- Visual Studio 內建資源編輯器,拖拉元件產生對話框、選單。
- 類別精靈自動綁定訊息處理函數(
ON_COMMAND 等)。
- 適合「趕工期、需標準 Windows 外觀」的專案。雖屬 C++,但核心邏輯可寫 C 風格函數。
路徑三:跨平台框架 Qt / GTK(現代首選)
- Qt (C++):Qt Designer 所見即所得,信號槽機制簡化事件處理,文檔豐富。
- GTK (C):純 C 物件系統,Glade 介面設計器,適合堅持用 C 語言者。
- 優點:一份碼跨 Windows/Linux/macOS,社群活躍。
給畢業生的建議
- 時間 < 2 週:直接用 MFC 對話式應用程式,用資源編輯器拉選單、按鈕,雙擊寫碼,最快出成果。
- 想學底層:跟著《Windows 核心程式設計》寫一個純 API 的 Hello World,再決定是否繼續。
- 長遠發展:投入 Qt 懷抱,C++ 基礎補一補,受益終身。
最小 MFC 專案骨架
// 建立 MFC AppWizard (exe) -> Dialog based
// 資源視圖:右鍵選單 -> Insert Menu -> 編輯 IDR_MAINFRAME
// 類別精靈:為選單項目添加 COMMAND 處理函數
void CMyDlg::OnFileOpen() {
CFileDialog dlg(TRUE);
if (dlg.DoModal() == IDOK) {
// 處理檔案路徑 dlg.GetPathName()
}
}