몇년을 프로그램을 해왔지만.. CTreeCtrl의 정확한 쓰임을 알지 못했다.
우선 lparam을 사용해서 사용자 정의 데이터를 포함할 수 있다는걸
모르고 있었다.
아래와 같이 정의를 사용할 수 있기 때문에 트리 컨트롤에 대한
확장성이 이제 눈에 보이는듯 하다.
----------------------------------------------------------------------
[사용자 정의 구조체를 설정]
typedef struct LIST_ITEM
{
int data;
}LIST_ITEM;
{
int data;
}LIST_ITEM;
[등록]
LIST_ITEM* pIData = new LIST_ITEM;
pIData->data = 100;
pIData->data = 100;
TVINSERTSTRUCT tvis;
tvis.hParent = TVI_ROOT;
tvis.hInsertAfter = TVI_LAST;
tvis.item.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
tvis.item.pszText = (LPTSTR) "Resource";
tvis.item.iImage = 1;
tvis.item.iSelectedImage = 1;
tvis.item.state = 0;
tvis.item.stateMask = 0;
tvis.item.lParam = (LPARAM)pIData;
tvis.hParent = TVI_ROOT;
tvis.hInsertAfter = TVI_LAST;
tvis.item.mask = LVIF_TEXT | LVIF_IMAGE | LVIF_PARAM;
tvis.item.pszText = (LPTSTR) "Resource";
tvis.item.iImage = 1;
tvis.item.iSelectedImage = 1;
tvis.item.state = 0;
tvis.item.stateMask = 0;
tvis.item.lParam = (LPARAM)pIData;
InsertItem(&tvis);
[데이터 접근]
HTREEITEM CNGResPanel::SetSelectedItemEx()
{
m_SelPoint = GetCurrentMessage()->pt;
CPoint pt(m_SelPoint);
ScreenToClient(&pt);
hSelectedItem = HitTest(pt);
{
m_SelPoint = GetCurrentMessage()->pt;
CPoint pt(m_SelPoint);
ScreenToClient(&pt);
hSelectedItem = HitTest(pt);
// TRACE("Click > ");
// TRACE(GetItemText(hSelectedItem));
// TRACE("\n");
// TRACE(GetItemText(hSelectedItem));
// TRACE("\n");
return hSelectedItem;
}
}
HTREEITEM CNGResPanel::GetSelectedItem()
{
return hSelectedItem;
}
{
return hSelectedItem;
}
CString CNGResPanel::GetSelectedItemText()
{
return GetItemText(GetSelectedItem());
}
{
return GetItemText(GetSelectedItem());
}
void CNGResPanel::OnNMClick(NMHDR *pNMHDR, LRESULT *pResult)
{
SetSelectedItem();
{
SetSelectedItem();
//Test
LIST_ITEM *pListItem = (LIST_ITEM *)GetItemData(GetSelectedItem());
TRACE2("CLICK : [%s] : %d\n", GetSelectedItemText(), pListItem->data);
LIST_ITEM *pListItem = (LIST_ITEM *)GetItemData(GetSelectedItem());
TRACE2("CLICK : [%s] : %d\n", GetSelectedItemText(), pListItem->data);
*pResult = 0;
}
}
[출처] [본문스크랩] 트리 컨트롤이 lparam을 사용해서 데이터 응용|작성자 상쾌한아침
댓글 없음:
댓글 쓰기