- - PR -
ListBoxのオーナードロー(OwnerDrawVariable)でスクロールが逆方向に見える
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-02 22:59
テーマがWindows XP の場合でも同じでした。 またWindows2000でも同じなので.NetのFrameworkの単なるバグだと判断しています。 テーマの設定でスクロール動作に関係しそうな項目は発見できませんでした。 またスクロール動作についてWindows全体に波及するような対策は考え物です。 ListBoxはリスト系のコントロールのベース(派生元)に有望だと考えているのですが こういう基本的な部分に不具合があると、自前で書いたほうがよいのかなとか 思ったりしています。 ただスムーススクロールを実現する方法が私のレベルでは思いつかないので どうしたものかと。。。 シンプルで基礎的な機能が正常に働いてくれれば、あとは応用するだけなので カスタムコントロールのベースとしてはとても魅力的なコントロールなのですが。。 うーん。。。。やっぱり、どこかMSの窓口をさがして連絡してみようかな。。。 | ||||
|
投稿日時: 2005-12-03 01:44
VB6?のDirListBoxでフォルダをダブルクリックしたときに必ずそうなるような。。。
| ||||
|
投稿日時: 2005-12-04 10:35
これ、端末 (環境) によって微妙に違うように見えます。
私の自宅の端末では、逆方向に流れるように見えますし、 会社で私が使っているある端末では、一瞬で最上部にアクティブなアイテムの背景色がワープします。 私が使っているもう 1 つの端末では、一瞬ちらつくものの確認できないくらいでした。 単にスペックの違いかもしれませんが。 インシデントを使ってまで問い合わせするかは、微妙なところです... 使用する場面がそうそうにないので、今まで流れてきたような気がします。 過去に、問い合わせ、または Feedback Center に上げたりされた方はいらっしゃいますか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-12-04 10:55
こんにちは。
.NET初心者の素朴な疑問なんですが… .NETでは描画にダブルバッファリング(ちらつき防止策)ってしなくていいんでしょうか? ネイティブなWindowsアプリって、普通ダブルバッファリングして描画しますよね? ジブさんのソースコードでは、 とくにそのような処理が見当たらないように見えるんですが。 どうなんでしょう? | ||||
|
投稿日時: 2005-12-04 12:24
.NETとかじゃなくて根本はリストボックスの現象だが。
俺はダブルバッファリングを普通とは考えていない。 それとちらつきの話は根本的な解決じゃないけどな。 スムーズスクロール中の描画を拒否しているんだから その時間は描画が止まっているからチラつくんじゃん。 ダブルバッファリングでちらつきは減るだろうが納得は出来ない。 スクリーンtoスクリーンコピーでスクロールし、 新しく現れた下部の行だけ描画しなおせばすむこと。 ダブルバッファリングなしで背景を消す前景を書く という方法でもチラつきは気にならないでしょ。 時間のかかる描画とかしていなくて、 Windowsがアフォなコーディングしていなければだけどね。 背景色つきで文字を書くことも出来るでしょうし。 検索してたらこれ見つけた http://www.atmarkit.co.jp/fdotnet/dotnettips/344listboxvari/listboxvari.html これって実行したらどうなるんだろう。 俺はVB.NETプログラミングしないので確認しない。ただそれだけ。 [ メッセージ編集済み 編集者: 未記入 編集日時 2005-12-04 12:29 ] | ||||
|
投稿日時: 2005-12-05 02:32
経験上私もそんな感じが。。。 もしかしたらWin98までは再現しないかも>未確認 | ||||
|
投稿日時: 2005-12-05 22:43
Tdnr_Symさん、こんにちは。
私はすべて自前で描画してるケースはダブルバッファリングしていますが 今回のケースでは少々めんどくさそうで、そこまでやっていません。 (なにしろ応急処置なものですから) ListBoxの場合のオーナードローではスクロール時の描画はコントロールに任せるようになっているため ダブルバッファリングのためにはWM_PAINTでスクロール描画を自前で書かなければならないようです。 そうなるとListBoxを使うメリットの多くが失われてしまいます。 というか、ListBoxをだましだまし使うより、一から書くほうがすっきりしそうです。 ただ、バグが直れば無駄な作業ですし、今はそういう時間はとれません。 (よいサンプルでもあれば別なんですが) とりあえず、応急処置だけ施して、バグが直るのを待とうかと思います。 |