Program Language/API | MFC

[MFC] CTreeCtrl에서 Icon 삽입하기

야곰야곰+책벌레 2021. 6. 2. 10:18
728x90
반응형

  CTreeCtrl에 Icon을 넣으면 시인성을 높일 수 있다. 그리고 Drag & Drop을 하려면 Icon이 필요하다.

아이콘을 만들려면 resource에 bmp 파일을 만들어 두어야 한다.

요렇게 만들자. 사용하려고 하는 동일 크기의 사이즈만큼 연속해서 붙이자.

ID는 IDB_TREE_NODE라고 정했다.

// 서브클래싱 상태로 코딩한다고 가정한다.
// 컨트롤러를 선언해서 한다면 앞에 선언한 변수를 포함시키면 된다.
CBitmap bmp;
bmp.LoadBitmap(IDB_TOOLBAR_NODE); // BITMAP ID는 IDB_TOOLBAR_NODE라고 정했다.
m_imageList.DeleteImageList // 멤버 변수로 CImageList를 m_imageList라고 선언해 두었다.
// 크기가 16x16인 아이콘으로 만들 것이고, 16BIT COLOR에 MAK를 씌어서 투명하게 만들 것이다.
m_imageList.Create(16, 16, ILC_COLOR16 | ILC_MASK , 0, 0);
m_imageList.Add(&bmp, RGB(255,0,255)); // 읽은 bitmap을 더하고, MASK 색으로 연보라로 정한다.
SetImageList(&m_imageList, TVSIL_NORMAL); // CTreeCtrl에 CImageList를 설정한다.

실행시키면 아래와 같이 나온다.

ITEM을 add 할 때 icon의 위치를 지정하면 된다.

HTREEITEM hItem = InsertItem(nodename.c_str(), res, res, hParent);

res가 0이면 , icon 사이즈를 16으로 정했다면, 0 ~ 16 픽셀까지, 1이면 17 ~ 32픽셀까지 표현된다.

728x90
반응형