TVITEM

ツリービューのアイテムの属性が格納されます。

typedef struct tagTVITEM {
    UINT       mask;           // 有効メンバを示すフラグ
    HTREEITEM  hItem;          // アイテムのハンドル
    UINT       state;          // アイテムの状態・イメージ
    UINT       stateMask;      // state のフラグ
    LPTSTR     pszText;        // アイテムの文字列
    int        cchTextMax;     // アイテムの文字列の長さ
    int        iImage;         // イメージのインデックス(非選択時)
    int        iSelectedImage; // イメージのインデックス(選択時)
    int        cChildren;      // 子アイテムを持つかどうかのフラグ
    LPARAM     lParam;         // アイテムの持つ32ビット値
} TVITEM, *LPTVITEM;

メンバ

mask

この構造体のどのメンバが有効かを指定します。 TVM_GETITEM メッセージでこの構造体が使われる場合には、このメンバはどの属性を取得するのかを指定します。

以下の値の組み合わせで指定します。

有効なメンバ
0x0001 (TVIF_TEXT) pszText, cchTextMax
0x0002 (TVIF_IMAGE) iImage
0x0004 (TVIF_PARAM) lParam
0x0008 (TVIF_STATE) state, stateMask
0x0010 (TVIF_HANDLE) hItem
0x0020 (TVIF_SELECTEDIMAGE) iSelectedImage
0x0040 (TVIF_CHILDREN) cChildren
0x1000 (TVIF_DI_SETITEM)

ツリービューコントロールが与えられた情報を保持し、再度情報を要求しないようにします。このフラグは TVN_GETDISPINFO 通知メッセージを処理する場合にのみ有効です。

hItem

ツリービューのアイテムを識別するためのハンドルが格納されます。

state

ビットフラグと、アイテムの状態を示すイメージリストインデックスのセットが格納されます。

このメンバのビット 0 からビット 7 まではアイテムの状態を表すフラグを表します。

このメンバのビット 8 からビット 11 までは、 1 から始まるオーバーレイイメージのインデックスを表します。インデックスが 0 の場合は、オーバレイイメージを持たないことを示します。オーバーレイイメージとは、ショートカットアイコンの矢印イメージなどのように、アイテムのアイコンの上に重なって表示されるイメージのことです。このイメージインデックスを取得するには、このメンバの値に 0x0F00 (TVIS_OVERLAYMASK) をAND結合します。オーバーレイイメージを設定するには、インデックスを8ビット左シフトしてからOR結合します。オーバーレイイメージのリストは ImageList_SetOverlayImage 関数で設定します。

このメンバのビット 12 からビット 15 までは、状態イメージのインデックスを表します。 0 のときは状態イメージを持ちません。状態イメージは、アプリケーション定義の状態を示すのにアイテムアイコンの横に表示されます。このビットを取り出すには、このメンバの値に 0xF000 (LVIS_STATEIMAGEMASK) をAND結合します。状態イメージを設定するには、インデックスを12ビット左シフトしてからOR結合します。状態イメージリストは TVM_SETIMAGELIST メッセージで指定されます。

stateMask

state メンバのどのビットについて取得または設定するのかを指定します。(state メンバの説明を参照)

アイテムの状態を操作するにはそれぞれ対応するビットフラグを、オーバーレイイメージのインデックスを操作するには 0x0F00 (TVIS_OVERLAYMASK) を、状態イメージのインデックスを操作するには 0xF000 (TVIS_STATEIMAGEMASK) を組み合わせて指定します。

このメンバは、他の状態意を変更させることなく任意のアイテムの状態を変更できるようにします。例えば、このメンバに LVIS_SELECTED を指定して state メンバに 0 を指定すると、アイテムは選択されていない状態になりますが、他の状態は変化しません。

pszText

アイテム情報を設定する場合は、アイテムに表示する文字列のアドレスを指定します。このメンバに -1 (LPSTR_TEXTCALLBACK) を指定した場合は、親ウィンドウはアイテムのテキストを保持しておき、 TVN_GETDISPINFO および TVN_SETDISPINFO 通知メッセージを処理しなくてはなりません。

アイテム情報を取得する場合は、文字列を受け取るためのバッファのアドレスを指定します。

cchTextMax

アイテム情報を取得する場合は、 pszText メンバで示されるバッファのサイズをバイト単位(Unicode 版の場合は文字数)で指定します。それ以外の場合は、このメンバは無視されます。

iImage

アイテムが選択されていない状態のときに表示されるイメージの、ツリービューのイメージリスト中におけるインデックスが格納されます。このメンバに -1 (I_IMAGECALLBACK) を指定した場合は、親ウィンドウはイメージのインデックスを保持しておき、 TVN_GETDISPINFO 通知メッセージを処理しなくてはなりません。

iSelectedImage

アイテムが選択されている状態のときに表示されるイメージの、ツリービューのイメージリスト中におけるインデックスが格納されます。このメンバに -1 (I_IMAGECALLBACK) を指定した場合は、親ウィンドウはイメージのインデックスを保持しておき、 TVN_GETDISPINFO 通知メッセージを処理しなくてはなりません。

cChildren

アイテムが子アイテムと関連付けられたかどうかを示すフラグが格納されます。

0 のとき、このアイテムが子アイテムを持っていないことを示します。

1 のとき、このアイテムが1つ以上の子アイテムを持っていることを示します。

-1 (I_CHILDRENCALLBACK) のとき、親ウィンドウはこのアイテムが子アイテムを持つかどうかを保持しておき、 TVN_GETDISPINFO 通知メッセージを処理しなくてはなりません。

ツリービューが TVS_HASBUTTON スタイルを持つ場合は、子アイテムの存在を示すプラス・マイナスのボタンを表示するかどうかがこのメンバによって決定されます。アイテムが子アイテムを持っていない場合でも、このメンバを設定することによって、強制的にプラス・マイナスのボタンを表示させることができます。

lParam

アイテムと関連付けられる32ビット値が格納されます。

対応情報

Windows 95 以降 / Windows NT 3.51 以降

変数との対応

HSP 変数 メンバ
メンバ名 オフセット サイズ
tvitem.0 mask 0 4
tvitem.1 hItem 4 4
tvitem.2 state 8 4
tvitem.3 stateMask 12 4
tvitem.4 pszText 16 4
tvitem.5 cchTextMax 20 4
tvitem.6 iImage 24 4
tvitem.7 iSelectedImage 28 4
tvitem.8 cChildren 32 4
tvitem.9 lParam 36 4

state メンバを格納するには

itemstate = (アイテムの状態)
iOverlay  = (オーバーレイイメージのインデックス)
iState    = (状態イメージのインデックス)
lvitem.2  = itemstate | (iOverlay << 8) | (iState << 12)

state メンバから各値を取り出すには

itemstate =  lvitem.2 & 0x00FF
iOverlay  = (lvitem.2 & 0x0F00) >> 8
iState    = (lvitem.2 & 0xF000) >> 12