• ベストアンサー

SetTimerの行でアサートエラーが出てしまう

MFCで、実行中 SetTimer(10, 1000, NULL); を記述しているコードでアサートエラーが出てしまいます。 クラスはCWnd継承クラスで作成し、afxwin.hをインクルード、 OnTimer関数を追加したのですが、この関数に飛びません。 MESSAGE_MAPにはON_WM_TIMER()の記述を確認しています。 何がいけないのか教えてください。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>アサートエラー assertはコードの中で(MFCを記述した)プログラマが意図的に止めているだけですから その箇所をみれば原因はわかると思います。 (SetTimerの部分にブレークポイントをはりステップインしていけばわかります。) 私の環境はVisual Studio 2005なので環境が異なるかもしれませんが SetTimer(MFC)の中でassertの記述のある箇所は下記の1箇所だけです。 ASSERT(::IsWindow(m_hWnd)); IsWindowはそのウィンドウが存在しているかどうかを 調べるAPIですが、m_hWndの指すウインドウが存在していない為assertが発生しています。 assertが出るときにm_hWndがNULL等の無効な値か、 既にm_hWndのウインドウが破棄された後か、 或いはまだウインドウが作成されていない可能性があります。

_jast
質問者

お礼

とてもわかりやすい回答ありがとうございました。 アサートの調べ方も教えていただきありがとうございます。

関連するQ&A