首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言實現鬧鐘界面:MFC / Win32 API 繪製圖形化時鐘

     編輯:程式設計綜合問答

核心思路

C 語言本身無圖形庫,**必須調用平台 GUI API** 繪製視覺化時鐘界面。

Windows 平台方案

  1. MFC (Microsoft Foundation Classes):
    — CWnd::SetTimer(1, 1000, NULL) 每秒觸發 OnTimer。
    — OnPaint 中用 CDC::TextOut / DrawText 繪製時間字符串,或用 CStatic 控件 SetWindowText 更新。
    — 繪製表盤:CPen/CBrush 畫圓、刻度、指針 (三角函數計算端點)。
  2. 純 Win32 API:
    — CreateWindowEx 創建窗口,SetTimer,WM_TIMER / WM_PAINT 消息循環處理。
    — GDI 函數 (Ellipse, MoveToEx, LineTo) 繪製指針。
  3. 現代替代:WPF / WinForms (C#) / Qt (C++) / Electron (JS):開發效率高百倍,除非教學/嵌入式裸機,不建議用 C+Win32/MFC 做界面。

最簡 MFC 鬧鐘框架

class CClockDlg : public CDialogEx {
    CStatic m_timeCtrl;
    afx_msg void OnTimer(UINT_PTR nIDEvent) {
        CTime now = CTime::GetCurrentTime();
        m_timeCtrl.SetWindowText(now.Format("%H:%M:%S"));
        // 檢查鬧鐘時間,觸發 MessageBeep/PlaySound
    }
    afx_msg void OnPaint() {
        CPaintDC dc(this);
        // 畫表盤、指針 (可選)
    }
    DECLARE_MESSAGE_MAP()
};
BEGIN_MESSAGE_MAP(CClockDlg, CDialogEx)
    ON_WM_TIMER()
    ON_WM_PAINT()
END_MESSAGE_MAP()

// OnInitDialog
SetTimer(1, 1000, NULL);

關鍵提示

  • 控制台程序 (printf) 只能打印文本,無法呈現「時鐘樣子」。
  • 若作業要求「C 語言」,可用 graphics.h (Turbo C / EasyX) 繪圖,但屬教學古董環境。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved