- PR -

ListBoxのオーナードロー(OwnerDrawVariable)でスクロールが逆方向に見える

投稿者投稿内容
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-02 22:59
引用:

未記入さんの書き込み (2005-12-01 23:44) より:

この問題ってWindowsのテーマによって発生したりしませんか?
Windowsクラシックだと起きたりとか。



テーマがWindows XP の場合でも同じでした。
またWindows2000でも同じなので.NetのFrameworkの単なるバグだと判断しています。

テーマの設定でスクロール動作に関係しそうな項目は発見できませんでした。

またスクロール動作についてWindows全体に波及するような対策は考え物です。

ListBoxはリスト系のコントロールのベース(派生元)に有望だと考えているのですが
こういう基本的な部分に不具合があると、自前で書いたほうがよいのかなとか
思ったりしています。

ただスムーススクロールを実現する方法が私のレベルでは思いつかないので
どうしたものかと。。。

シンプルで基礎的な機能が正常に働いてくれれば、あとは応用するだけなので
カスタムコントロールのベースとしてはとても魅力的なコントロールなのですが。。

うーん。。。。やっぱり、どこかMSの窓口をさがして連絡してみようかな。。。
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-03 01:44
VB6?のDirListBoxでフォルダをダブルクリックしたときに必ずそうなるような。。。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-04 10:35
これ、端末 (環境) によって微妙に違うように見えます。
私の自宅の端末では、逆方向に流れるように見えますし、
会社で私が使っているある端末では、一瞬で最上部にアクティブなアイテムの背景色がワープします。
私が使っているもう 1 つの端末では、一瞬ちらつくものの確認できないくらいでした。
単にスペックの違いかもしれませんが。

インシデントを使ってまで問い合わせするかは、微妙なところです...
使用する場面がそうそうにないので、今まで流れてきたような気がします。

過去に、問い合わせ、または Feedback Center に上げたりされた方はいらっしゃいますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-12-04 10:55
こんにちは。

.NET初心者の素朴な疑問なんですが…
.NETでは描画にダブルバッファリング(ちらつき防止策)ってしなくていいんでしょうか?
ネイティブなWindowsアプリって、普通ダブルバッファリングして描画しますよね?

ジブさんのソースコードでは、
とくにそのような処理が見当たらないように見えるんですが。
どうなんでしょう?
未記入
大ベテラン
会議室デビュー日: 2005/03/12
投稿数: 148
投稿日時: 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/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-05 02:32
引用:

.NETとかじゃなくて根本はリストボックスの現象だが。


経験上私もそんな感じが。。。
もしかしたらWin98までは再現しないかも>未確認
ジブ
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 135
投稿日時: 2005-12-05 22:43
Tdnr_Symさん、こんにちは。

引用:

Tdnr_Symさんの書き込み (2005-12-04 10:55) より:

.NETでは描画にダブルバッファリング(ちらつき防止策)ってしなくていいんでしょうか?




私はすべて自前で描画してるケースはダブルバッファリングしていますが
今回のケースでは少々めんどくさそうで、そこまでやっていません。
(なにしろ応急処置なものですから)

ListBoxの場合のオーナードローではスクロール時の描画はコントロールに任せるようになっているため
ダブルバッファリングのためにはWM_PAINTでスクロール描画を自前で書かなければならないようです。

そうなるとListBoxを使うメリットの多くが失われてしまいます。
というか、ListBoxをだましだまし使うより、一から書くほうがすっきりしそうです。

ただ、バグが直れば無駄な作業ですし、今はそういう時間はとれません。
(よいサンプルでもあれば別なんですが)

とりあえず、応急処置だけ施して、バグが直るのを待とうかと思います。

スキルアップ/キャリアアップ(JOB@IT)