HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0907
ux仮想リストビューについて5解決


ux

リンク

2010/9/7(Tue) 14:52:18|NO.34904

たくさんの項目を表示させるのに、仮想リストビューを使っているのですが、
マウスで項目を複数選択するときに表示される四角い点線がちらついてしまいます。
マウスで数百個の項目を選択しようとすると、かなりひどくなります。

なお、仮想リストビューではなく、普通のリストビューの場合、ちらつきは発生しません。
当方の環境は、WinXP SP3 Home、Pentium4 1.8GHz、RAM 1GBです。

どなたか、解決法を知っていましたら、ご教授お願いします。

以下サンプルスクリプト


#module #deffunc lv_addcol int p1,str p2,int p3,int p4,int p5 text = p2 lvcolumn = 15,p4,p3,varptr(text),0,p5,0,0 sendmsg p1,0x101B,p5,varptr(lvcolumn) return #global winobj "SysListView32","",0x200,0x50000001|0x1000,600,420 //リストビュー作成 hList = objinfo(stat,2) //カラム追加 lv_addcol hList,"ファイル名",150,0,0 lv_addcol hList,"サイズ",90,1,1 num = 10000 //項目の数 sendmsg hList,0x102F,num,1 //LVM_SETITEMCOUNT oncmd gosub *event_wm_notify,0x4e stop *event_wm_notify dupptr nmhdr,lparam,12 if nmhdr(0) = hList & nmhdr(2) = -150{ //LVN_GETDISPINFO dupptr lvdi,lparam,48 //LV_DISPINFO構造体 switch lvdi(5) case 0 //ファイル名のカラム if lvdi(3) & 1{ text = "ファイル "+lvdi(4) lvdi(8) = varptr(text) } swbreak case 1 //サイズのカラム if lvdi(3) & 1{ text = ""+lvdi(4) lvdi(8) = varptr(text) } swbreak swend } return



この記事に返信する


gagreag

リンク

2010/9/9(Thu) 14:00:58|NO.34923

仮想リストビューと普通のリストビューの違いは何?



ux

リンク

2010/9/10(Fri) 18:49:24|NO.34931

>gagreagさん

普通のリストビューは、LVM_INSERTITEMメッセージでアイテムを追加していきますが、
アイテム数が、10000くらいになると全てのアイテムを追加するのに、かなり時間がかかってしまいます。

仮想リストビューは、アイテムが表示される直前に、LVN_GETDISPINFO通知が来て、
必要な情報(テキストなど)をセットするため、最初にアイテムを全て追加しておく必要がないのです。
そのため、大量のアイテムを扱うには、都合がいいと思います。

…わかりにくい説明ですいません。



Him

リンク

2010/9/12(Sun) 04:07:30|NO.34957

ちらつく原因はドラッグ中に

case 0 //ファイル名のカラム if lvdi(3) & 1{ text = "ファイル "+lvdi(4) lvdi(8) = varptr(text) } swbreak
の処理回数が多過ぎるせいだと思います。

case 0 //ファイル名のカラム if lvdi(3) & 2{ text = "ファイル "+lvdi(4) lvdi(8) = varptr(text) } swbreak
これなら必要最低限の処理回数で済むと思いますが、、



ux

リンク

2010/9/12(Sun) 10:40:54|NO.34958

>Himさん
ありがとうございます!
助かりました!

ただ、この方法でも、「大きいアイコン」表示だとちらついてしまいます。
そのへんは、自力で解決しようと思います。



ux

リンク

2010/9/12(Sun) 10:51:50|NO.34959

>ただ、この方法でも、「大きいアイコン」表示だとちらついてしまいます。
ちらつくのではなく、表示が変になるの間違いでした。(多少ちらつきもしますが)
一応訂正させていただきます。

質問は、詳細表示のリストビューでしたので、解決といたします。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.