在 MFC 對話框專案中,儀表指針由 OnTimer 定時器驅動自動旋轉。需求:加入「啟動」與「停止」按鈕,控制儀表運轉狀態。
BN_CLICKED 處理函數中呼叫 KillTimer(timerID) 銷毀定時器,指針即刻停止。SetTimer(timerID, interval, NULL) 重建定時器,指針恢復轉動。// 停止按鈕
void CMyDlg::OnBnClickedBtnStop()
{
KillTimer(ID_TIMER_METER); // ID_TIMER_METER 為 SetTimer 時指定的定時器 ID
}
// 啟動按鈕
void CMyDlg::OnBnClickedBtnStart()
{
SetTimer(ID_TIMER_METER, 100, NULL); // 100ms 間隔觸發 OnTimer
}
// OnTimer 中更新指針角度並呼叫 Invalidate() 重繪
void CMyDlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == ID_TIMER_METER) {
UpdateNeedleAngle();
Invalidate(FALSE);
}
CDialogEx::OnTimer(nIDEvent);
}
OnDestroy)務必呼叫 KillTimer 防止資源洩漏。OnTimer 內以旗標控制是否更新角度。