2016-12-28 61 views
1

特定のツリー項目にアイコンを追加できますか?MFCのツリー(CTreeCtrl)内の特定のツリー項目のアイコンを追加

私は次の関数を使用してアイコンを持つアイテムを追加してい:

HTREEITEM InsertItem(LPCTSTR lpszItem,int nImage,int nSelectedImage,HTREEITEM hParent = TVI_ROOT,HTREEITEM hInsertAfter = TVI_LAST);

は、アイテムのアイコンをスキップするには、私が使用しています-1値をnImagenSelectedImageのために。これにより、アイコンは表示されませんが、スペースが来ています。

答えて

0

CTreeCtrl::SetItemを見ましたか?

最も簡単なのは、TVITEM構造を記入して渡すことです。

typedef struct tagTVITEM { 
    UINT  mask; 
    HTREEITEM hItem; 
    UINT  state; 
    UINT  stateMask; 
    LPTSTR pszText; 
    int  cchTextMax; 
    int  iImage; 
    int  iSelectedImage; 
    int  cChildren; 
    LPARAM lParam; 
} TVITEM, *LPTVITEM; 

あなたはTVIF_IMAGEmaskを設定し、iImage値を指定します。

開始するには、CTreeCtrlの期間有効なCImageListオブジェクトを作成する必要があります。通常、変数としてクラスに追加します。例:

m_imgList.Create(IDB_BMP_CHECK_IMAGELIST, 16, 10, 0x0000FF00); 

CTreeCtrl::SetImageListに電話をかけることができます。例:

m_treeCtrl.SetImageList(&m_imgList, LVSIL_SMALL); 

その後、イメージインデックス値を使用できます。

+1

これは、OPが防止しようとしているのと同じ効果をもたらします。アイテムのイメージを設定しないと、その場所に空のスペースがあります。 OPがアイコンを持っているかどうかにかかわらず、各アイテムは左端から開始されます。 – IInspectable

+0

私は参照してください。私はそれが醜いと思う。 OK。 –

+1

@AndrewTruckle、IInspectable:ありがとうございます。項目にアイコンが設定されていない場合は、デフォルトでインデックス0が使用されます。しかし、私は特定のツリー項目だけのアイコンを追加する必要があります。あなたがそれを達成しようと思えば、情報を共有してください。 – Dipti

関連する問題