MFC 對話框調用 `SetTimer` 並編寫了 `OnTimer`,但定時器不觸發,無報錯。
消息映射未建立:MFC 通過消息映射宏將 `WM_TIMER` 消息路由到 `OnTimer` 函數。若未在類中聲明 `ON_WM_TIMER()` 或未用 ClassWizard 關聯,消息泵不會調用該函數。
BEGIN_MESSAGE_MAP(CMyDialog, CDialogEx)
ON_WM_TIMER()
END_MESSAGE_MAP()
void CMyDialog::OnTimer(UINT_PTR nIDEvent) {
if (nIDEvent == 1) {
// 定時任務代碼
}
CDialogEx::OnTimer(nIDEvent);
}
MFC 消息驅動機制要求消息映射表完整。定時器不執行 90% 是缺 `ON_WM_TIMER()` 映射條目,補全即可。