Jan 16, 2006

「小便たれ」ロジックとWTL::CClientDC

ポスト @ 19:00:33 | プログラミング,ATL/WTL

激烈に仕事してます。って単に火を噴いてるからなだけですが。苦笑
とりあえず今現時点においては猛烈な眠気の中がんばっております。

で、そういう状況ですとしょうもないミスが出るもので。

昨日、独自の描画が見事に動いたのはよいのですが、そのウィンドウが出た状態でUI操作を行うと、なぜか同じプロセスの別のウィンドウの再描画だけが行われない、という不可思議な現象が出ました。

そしてなにより、WM_TIMER が、SetTimer()は正常終了しているのにまったく受け取れません。

なんじゃこりゃ、的に悩んだわけですが。

解題は、WM_PAINTなのにCClientDCつくって描画してたから
これにより描画スレッドがCPU100%負荷状態になったのですが、イマドキのマシンはHyper Threadingのため、そういうときでもCPUは50%消費にしかならず、Windows全体が重くなった感じはしないのです。
でももちろん、そのウィンドウのメッセージループのあるスレッドは激重になるわけで、そうすると「メッセージキューが忙しいときはWM_TIMERは捨てられる」という有名な法則によりタイマメッセージも取れなかった、というオチ。

もう、Kさんは鬼の首取ったように「あなたWindowsのプログラマもう10年もやってて何やってるんですか」となじられまくり。笑
どころかもう半日過ぎてるのにすべての会話でこれをネタにされる始末。

っていうか、私もこの件、思い出すたびに自分でマジに笑ってしまいます。笑
あぁ、年とったんだなぁ、でもそんなミスするかいなって感じで。笑

ガキンチョの論理で「小便たれは、オトナになっても小便たれ」というのがありますが、Kさんからは、このネタあと10年くらいは言われ続けるんだろうなぁ。笑

Trackback

No Trackbacks

Track from Your Website

http://blog.izumichan.com/trackback/tb.php?id=151

Comment

No Comments

Post Your Comment


*は入力必須です。E-Mailは公開されません。