[MFC] Tree ctrl 에 체크박스 부모 노드 체크 시 자식 노드 체크

TV_HITTESTINFO hit_info;

// 화면상에서 마우스의 위치를 얻는다.
::GetCursorPos(&hit_info.pt);

// 얻은 마우스 좌표를 트리컨트롤 기준의 좌표로 변경한다.
::ScreenToClient(m_TreeCtrl_BaseFile.m_hWnd, &hit_info.pt);

// 현재 마우스 좌표가 위치한 항목 정보를 얻는다.
HTREEITEM current_item = m_TreeCtrl_BaseFile.HitTest(&hit_info);

if(current_item != NULL)
{
// 마우스가 위치한 항목을 찾았다면 해당 항목을 선택한다.
m_TreeCtrl_BaseFile.Select(current_item, TVGN_CARET);
}

HTREEITEM hNode;
CString strFileName ="";
CString strTestName = "";
CString strCombe = "";

hNode = m_TreeCtrl_BaseFile.GetNextItem(NULL, TVGN_CARET); // 현재 선택된 아이템의 핸들을 가져온다.
strFileName = m_TreeCtrl_BaseFile.GetItemText(hNode); // 그 아이템의 이름을 얻어온다.


if(strFileName.Find('[') != -1 && (hit_info.flags & TVHT_ONITEMSTATEICON) != 0)
{
HTREEITEM hChildItem = m_TreeCtrl_BaseFile.GetChildItem(hNode);

while (hChildItem != NULL)
{
if (m_TreeCtrl_BaseFile.GetCheck(hNode))
{
m_TreeCtrl_BaseFile.SetCheck(hChildItem,FALSE);
}
else
{
m_TreeCtrl_BaseFile.SetCheck(hChildItem,TRUE);
}

hChildItem = m_TreeCtrl_BaseFile.GetNextItem(hChildItem, TVGN_NEXT);
}
}

hNode = m_TreeCtrl_BaseFile.GetNextItem(hNode, TVGN_PARENT); // 현재 선택되어진 아이템의 상위 아이템을 가져온다.
strTestName = m_TreeCtrl_BaseFile.GetItemText(hNode);

댓글

이 블로그의 인기 게시물

[Python] 파이썬에서 Opencv를 이용해 웹캠 영상 읽어오기 및 저장

[MFC] 에디트 컨트롤에 계속 문자열 추가하기(List log)

[Python] OpenCv를 이용하여 마우스 위치 가져오기