VS2010 で MFC ダイアログ ベースのアプリを作成し、3 秒ごとに画像コントローラーを更新するタイマーを追加したいと考えました。しかし、OnTimer メソッドは機能しませんでした。
Class Wizard を使用して WM_TIMER をメッセージ キューに追加したところ、次のようになりました。
BEGIN_MESSAGE_MAP(CxxxxDlg, CDialogEx)
ON_WM_PAINT()
ON_BN_CLICKED(IDOK, &CxxxxDlg::OnBnClickedOK)
ON_WM_TIMER()
END_MESSAGE_MAP()
xxxxDlg.cpp では、OnInitDialog に SetTimer メソッドを配置しました。
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 メソッドは xxxxdlv.h で宣言されています。
public:
afx_msg void OnTimer(UINT_PTR nIDEvent);
アプリを実行すると、SetTimer は 123 を返しました。しかし、プログラムは OnTimer メソッドの 1 行目に設定したブレークポイントに到達しませんでした!
次に、タイマーをテストするためだけに別のhello worldプロジェクトを作成しました。まったく同じ方法でタイマーを設定しましたが、うまくいきました。
だから私は OnFullShow() メソッドが問題かもしれないと思った。このメソッドは、ウィンドウを全画面モードに変更するために使用されました。この行にコメントしますが、それでも OnTimer は機能しませんでした。
ここで質問を確認しました。しかし、それは役に立ちません。
誰が問題がどこから来たのか知っていますか? ありがとう!
PS。メモリリークの警告をいくつか受け取りました。これは問題でしたか?