1、添加按钮 ,创建单击按钮响应函数
//从树 中选中任务添加到list中
void CKingSchedulView::OnBnClickedAddTask()
{
HTREEITEM hRoot = m_TreeCtrol.GetRootItem();
while(NULL != hRoot)
{
CheckAndAddNode(hRoot);
hRoot = m_TreeCtrol.GetNextSiblingItem(hRoot);
}
}
2、遍历树形控件中呗选中节点
void CKingSchedulView::CheckAndAddNode( HTREEITEM hRoot )
{
// 如果不是叶子节点
if(TRUE == m_TreeCtrol.ItemHasChildren(hRoot))
{
if(TRUE == m_TreeCtrol.GetCheck(hRoot))
{
// 插入所有页节点
InsertAllLeaves(hRoot);
}
else
{
// 查询所有节点,递归
HTREEITEM hChild = m_TreeCtrol.GetChildItem(hRoot);
while(NULL != hChild)
{
CheckAndAddNode(hChild);
hChild = m_TreeCtrol.GetNextSiblingItem(hChild);
}
}
}
else // 是叶子节点
{
// 被选中
if(TRUE == m_TreeCtrol.GetCheck(hRoot))
{
//m_listClients.InsertString(m_listClients.GetCount(), m_TreeCtrol.GetItemText(hRoot));
DWORD_PTR pData = m_TreeCtrol.GetItemData(hRoot);
if (pData == NULL)
{
//::AfxMessageBox(IDS_KXLOGICDEV_SCHEDULE_ERROR_MUST_SELECT_TASK, MB_OK | MB_ICONERROR);
return;
}
CkxTask* pTask = reinterpret_cast<CkxTask*>(pData);
ASSERT(pTask != NULL);
AddTaskFromTreeToList(pTask);
}
}
}
3、
void CKingSchedulView::InsertAllLeaves( HTREEITEM hRoot )
{
HTREEITEM hChild = m_TreeCtrol.GetChildItem(hRoot);
while(NULL != hChild)
{
if(TRUE == m_TreeCtrol.ItemHasChildren(hChild))
{
InsertAllLeaves(hChild);
}
else
{
//m_listClients.InsertString(m_listClients.GetCount(), m_TreeCtrol.GetItemText(hChild));
DWORD_PTR pData = m_TreeCtrol.GetItemData(hChild);
if (pData == NULL)
{
//::AfxMessageBox(IDS_KXLOGICDEV_SCHEDULE_ERROR_MUST_SELECT_TASK, MB_OK | MB_ICONERROR);
return;
}
CkxTask* pTask = reinterpret_cast<CkxTask*>(pData);
ASSERT(pTask != NULL);
AddTaskFromTreeToList(pTask);
}
hChild = m_TreeCtrol.GetNextSiblingItem(hChild);
}
}