dポイントプレゼントキャンペーン実施中!

WM_PAINT
に書けば再描画のたびにいったん白紙になるのでちらつくし
直接のイベントの場所でかけば
陰に隠れたりいったんアイコン化されて再び描画されたときに表示されないし
両方に書くのは負担になるし管理が大変だしバグの原因になりやすいし
このようなジレンマをどのように解決したら言いのでしょうか?

A 回答 (3件)

奇妙な自己完結になりそうなので少々。


ScrollWindowEx について調べてみることをお勧めします。
この関数は複雑ですが、無効領域についてなど色々と理解が深まります。

↓ScrollWindowEx のドキュメント
http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0
この回答へのお礼

ScrollWindowExをいちど調べてみます
ありがとうございました

お礼日時:2003/02/07 05:15

あなたが何を使って実装しているかがわからないと答えようのない質問です。



Visual C++ / MFC ですか?
C++ Builder / VCL ですか?
Win32API ですか?
それ以外のなにかですか?

# '環境'を明記してください。
とは、そういう意味です。

この回答への補足

失礼しました
無償ボーランドC++5.5ですあり従ってWIN32APIです

不細工ですがロールのプログラムを関数化してWM_PAINTとWM_UP等から呼び出すようにするしかないようですね?

補足日時:2003/02/07 00:33
    • good
    • 0

# '環境'を明記してください。



> 再描画のたびにいったん白紙になるのでちらつくし

WM_ERASEBKGND メッセージに反応して画面を白くする
コードを書いているからじゃないかしら?

> 直接のイベントの場所でかけば...

お行儀のいい実装ではありません。
描画の準備'だけ'行い、再描画領域をInvalidateします。
そうすればWM_PAINTが飛んできますから、そこで描きます。

この回答への補足

# '環境'を明記してください。

ただ単に
ボタンを押したら
WM_COMMANDで
WM_PAINTのなかのtextファイルを読み出す場所を通過するようにモード設定しTextOutでファイルを書き出しているだけです
またそれはロールイベントによってupdownさせます
問題はこのロール(キーダウンのupやダウンやnextやprier)のときのちらつきです


白紙にするような事は何もやっていません
白紙にするのはシステムがいったん画面をクリヤするからだと思います
そうしないとダブらない場所に前の画像が残りますからね
インバリッドの場所を小さくしてちらつきを減らす方法は再描画の場所が小さいときは言いのですが大きいと当然ちらつきます
テキストファイルをロールするときなどです

WM_PAINTの宿命ですね

補足日時:2003/02/06 12:17
    • good
    • 0

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