2016-12-28 2 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

나는 본다. 나는 그것이 추악하다고 생각한다. 승인. –

+1

@AndrewTruckle, IInspectable : 답변 해 주셔서 감사합니다. 아이콘이 항목에 대해 설정되지 않은 경우 기본적으로 색인 0이 사용됩니다. 하지만 특정 트리 항목에 대해서만 아이콘을 추가해야합니다. 정보를 얻으려는 경우 정보를 공유하십시오. – Dipti