我在 VS2010 中创建了一个基于 MFC 对话框的应用程序,并想添加计时器以每 3 秒更新一次图片控制器。但是 OnTimer 方法从未奏效。
我使用类向导将 WM_TIMER 添加到消息队列中,结果如下:
BEGIN_MESSAGE_MAP(CxxxxDlg, CDialogEx)
ON_WM_PAINT()
ON_BN_CLICKED(IDOK, &CxxxxDlg::OnBnClickedOK)
ON_WM_TIMER()
END_MESSAGE_MAP()
在 xxxxDlg.cpp 中,我将 SetTimer 方法放在 OnInitDialog 中:
BOOL CxxxxDlg::OnInitDialog()
{
CDialog::OnInitDialog();
SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, TRUE);
_imageCounter = 1;
_isMale = 3;
_testNum = 0;
SetTimer(123, 2000, NULL);
bFullScreen = false;
OnFullShow();
updateImages();
UpdateData();
return TRUE;
}
OnTimer 方法在 xxxdlv.h 中声明:
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);
当我运行应用程序时,SetTimer 返回 123。所以这里应该一切正常。但是程序从来没有到达我在 OnTimer 方法的第一行设置的断点!
然后我写了另一个hello world项目只是为了测试计时器。我以完全相同的方式设置计时器并且效果很好。
所以我认为 OnFullShow() 方法可能是问题所在。此方法用于将窗口更改为全屏模式。我评论了这一行,但 OnTimer 仍然没有工作。
我在这里检查了问题。但这无济于事。
有谁知道问题出在哪里?谢谢!
PS。我确实收到了一些内存泄漏的警告。这有关系吗?