開発じたばた日誌

前へ●●●次へ
じたばた日誌目次へ戻る
TSUCHY Softへ戻る


Styx チラチラ退治編

 またしても互換性のあるのおでましか。 まったくなんでこんなに面倒くさい儀式が必要なんだ。 でもそれにはちゃんとした理由があるんですね。

 たとえば互換性のあるビットマップをたくさん用意しておきます。 それらにはしこしこ絵を書いておきます。 こうしておくとBitBltを使っていろいろな絵をさっと切り替えて表示できるのです。

 これが大切なこととわかったのですが、釈然としません。 このような大切ななぜ必要なのかがMSの提供するものにちっとも書かれてないのです。 作者は、はまってつまずいて一つずつ体得していくしかないのです。

 さてBitBltをうまく使えて表示は心なし速くなった気がします。 しかしチラチラはまだ発生するのです。

 なぜだ、どこに間違いがあるんだ。 互換性のあるデバイスコンテキストに表示している間は、表示はチラチラしていない。 どうやら私のあずかり知らぬところでチラチラが発生しているようです。

 EraseBackgroundなるものを発見しました。読んで字のごとく、背景を消しますよという意味です。 これか、原因は。 Windows君は作者がお願いしなくても、必要が生じれば背景を自動的に背景色で塗りつぶしてくれるのです。 そしてこのときチラが見えるのです。

 確かにこれは重要なことです。普通はこのおかげで作者は楽ができます。 私は運が悪かった。これのおかげで苦労しました。幸いにもWinodws君にこの動作をやめてもらうのは簡単です。 「もういいよ」と言えばいいのです。

 チラチラは完璧になくなりました。おまけに表示も速くなりました。 無駄な処理をなくしたことも理由の一つですが、互換性のあるデバイスコンテキストを使ったのが最大の理由と考えています。

 これまではスクリーンに直接表示していました。背景を消したり、線を引いたり、アイコンを描いたりしていました。 このような表示命令をスクリーンにするのは遅いと思います。 互換性のあるデバイスコンテキストに描画するのは、結局メモリーの書き込みですから速いのではないでしょうか。

 そしてスクリーンに対してちょっかいをだすのはBitBltという高速な命令だけです。

 Styxは見違えるようにきびきび動作しました。ユーザーさんのうけもとてもよかったと記憶しています。