アプリ版:「スタンプのみでお礼する」機能のリリースについて

MFCで、実行中
SetTimer(10, 1000, NULL);
を記述しているコードでアサートエラーが出てしまいます。

クラスはCWnd継承クラスで作成し、afxwin.hをインクルード、
OnTimer関数を追加したのですが、この関数に飛びません。
MESSAGE_MAPにはON_WM_TIMER()の記述を確認しています。
何がいけないのか教えてください。お願いします。

A 回答 (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のウインドウが破棄された後か、
或いはまだウインドウが作成されていない可能性があります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/11/19 10:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!