掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
プログラム走らせたら、Windowsが制御不能に (ID:51337)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いろんなレスを皆さん有り難うございます。 breakは省略してます(申しわけないっす。情報足りませんね(−−;) >1ms間隔のタイマーでは早すぎると思われます。 >NT系でデフォルトの場合、タイマー精度は5msか10ms程度だったハズです。 >(9x系の場合は1msですが、ソレでも早すぎます。) Windowsのタイマー精度が高くない事は知ってたんですが、 とりあえず現時点では「描画の高速処理だ。おぉ〜!」という感じで、 一番遅くならなそうな数値を入れてます。 だけど、「画面との同期」の存在すら忘れてたので、 言われてみると確かに速い、速すぎる…(−−; あと、WM_PAINTの処理のされ方の関係で、WM_PAINTは確か処理出来るタイミングでWindows側が処理する様な事が何処かに書いてあったと思ったので、何はともあれ処理してくれる様に振った数値という事でもあります。 ただ、Windows側がどこまでメッセージをプールしてくれるのか…なるほど、メッセージキューが足りなくなって暴走してるんだろうか。 >case WM_TIMER: > InvalidateRect(hWnd,&rc,false); >が原因ですね。 WM_PAINTを高速に発行するためにこういう書き方になったんですが、マズいですかね?(−−; KillTimerでタイマーが終了すると、WM_PAINTの発行も終了すると言う図式を書いたんですが、これ以外にスマートな書き方思い付かなくて…。 ところで、メッセージキューを消化せずにアプリが終了する事ってあるんですか? PostQuitMessageはWM_QUITメッセージをポストしますけど、メッセージキューに大量のWM_PAINTが先客でいたら…(−−;; なんとなく問題の本質が見えてきました。 まだ「これだっ!」というものは無いんですけど、WM_PAINT回りがとにかく雑なんですね。 あと、終了回りもチェックしてみます。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.