投稿日 | : 2003/10/07(Tue) 22:37 |
投稿者 | : TOM |
Eメール | : |
URL | : |
タイトル | : Re^4: VB6のListViewにAPIのImageList連結 |
WEB検索で見つけた以下のサンプルで、ほぼ解決できました。
http://www.mvps.org/btmtz/listview/
SystemImagelist: How to associate the system imagelist with the VB ListView.
Download systemimagelist.zip (11kb)
システムイメージリストやAPIで作成したイメージリストをVBのリストビュー
に連結するには、LVM_SETIMAGELISTメッセージを使用する様です。
この場合、VBのListViewが上記イメージリストの連結を解除してしまうので、
サブクラス化により、LVM_SETIMAGELISTメッセージを握り潰す必要がある様です。
次に、アイテムのイメージ設定は、LVM_SETITEMメッセージを使用する様です。
問題点として、VB6 ListView (MSCOMCTL.OCX) を使用した場合、
EXEで実行すると、選択項目のアイコンが消えてしまいます。
VB5 ListView (COMCTL32.OCX) を使用した場合、この現象は発生しません。
VB6 ListView での回避策が見つからないのが少し残念ですが...
この回避策をご存知でしたら教えて下さい。
蛇足ですが、サブクラス化しない方法を検討してみました。
(1) 初期表示のListView.Viewプロパティの設定
小アイコンの場合、通常通り lvwReport 等を設定。
大アイコンの場合、次の様に小アイコン, 大アイコンの順に続けて設定。
ListView1.View = lvwReport
ListView1.View = lvwIcon
(2) Viewの変更
初期表示後のView変更に、Viewプロパティが使えないので、ウィンドウスタイル
(LVS_ICON, LVS_REPORT, LVS_SMALLICON, LVS_LIST)を変更する。
あとは、サブクラス化する場合と同じです。
以上、遅くなりましたが報告まで。