ツリービューに複数のアイコン

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: ツリービューに複数のアイコン

by C1000 » 2006年8月12日(土) 09:40

試してみましたが、うまくいきませんでした。できればエクスプローラのツリービューのようにしたいのですが...あとTVGN_CHILDは指定されたアイテムが持つ最初の子アイテムを取得するようです。

by 7 » 2006年8月12日(土) 09:27

> 親アイテムのアイコンは出来たのですが、子アイテムのすべてに設定するにはどうすればいいのでしょうか
調べるのも面倒で想像のお話ですが、TVM_ROOTTVGN_CHILD(だっけ?)にしてみては如何でしょう?

コード: 全て選択

TVIcon->hItem=SendMessage(hAny,TVM_GETNEXTITEM,TVGN_ROOT,0) As HTREEITEM
の部分を、

コード: 全て選択

Dim hRoot As HTREEITEM
	hRoot=SendMessage(hAny,TVM_GETNEXTITEM,TVGN_ROOT,0) As HTREEITEM
	TVIcon->hItem=SendMessage(hAny,TVM_GETNEXTITEM,TVGN_CHILD,hRoot)
親と子、別にイメージリストを設定する方法じゃないと思うんですけど、ツリービューの勉強にはなるかもしれません。
http://abfan.active.client.jp/の「Control Windows」の「ツリービューの使い方」っていう項目です。

by C1000 » 2006年8月11日(金) 15:58

親アイテムのアイコンは出来たのですが、子アイテムのすべてに設定するにはどうすればいいのでしょうか

by 7 » 2006年8月11日(金) 12:46

> 親アイテムのアイコンを設定しようとコードを組んでみましたがアクセス違反が起きます。どこが悪いのでしょうか?
実際に動かしてないのですが、こうしてみては如何でしょう? TVITEM構造体のポインタ型を宣言してもそのまま使える訳ではありません。mallocやcallocでメモリを確保してやる必要が有ります。
TVITEM構造体のポインタを格納する場合は、mallocやcallocしなくても良かったと思うんですけどね。

by C1000 » 2006年8月11日(金) 12:17

親アイテムのアイコンを設定しようとコードを組んでみましたがアクセス違反が起きます。どこが悪いのでしょうか?

コード: 全て選択

    'イメージリストを作成
	Dim TVIcon As *TVITEM
	Dim IMIndex[2] As Long 'アイテムのインデックス
    hImageList=ImageList_Create(16,16,ILC_COLOR4 or ILC_MASK,3,0)
    IMIndex[0]=ImageList_AddIcon(hImageList,LoadIcon(GetModuleHandle(0),IDI_Close))
    IMIndex[1]=ImageList_AddIcon(hImageList,LoadIcon(GetModuleHandle(0),IDI_Open))
	IMIndex[2]=ImageList_AddIcon(hImageList,LoadIcon(GetModuleHandle(0),IDI_Text))
    SendMessage(hAny,TVM_SETIMAGELIST,0,hImageList As Long)


	TVIcon->hItem=SendMessage(hAny,TVM_GETNEXTITEM,TVGN_ROOT,0) As HTREEITEM 'ここでアクセス違反
	TVIcon->mask=TVIF_IMAGE
	TVIcon->iImage=IMIndex[0]
	TVIcon->iSelectedImage=IMIndex[1]

	SendMessage(hAny,TVM_SETITEM,0,TVIcon)

Re: ツリービューに複数のアイコン

by ノッチ » 2006年8月11日(金) 10:31

> ツリービューの親アイテムと子アイテムに別々のアイコンを描画するにはどうすればいいのでしょうか?

流れとしては、
1) イメージリストの作成
2) イメージリストの割り当て
3) イメージリストの選択
でしょうか。

1はビットマップをイメージリストに変更等々、ググれば出てきます。
(ImageList_Create、ImageList_Addあたり)

2はTVM_SETIMAGELISTでSendMessage。

3はTVITEM構造体のmaskにTVIF_IMAGEを入れて、iImageとiSelectedImageで
使用するIndexを指定します。

こんな感じです。

ツリービューに複数のアイコン

by C1000 » 2006年8月10日(木) 15:50

ツリービューの親アイテムと子アイテムに別々のアイコンを描画するにはどうすればいいのでしょうか?

ページトップ