设为首页 加入收藏

TOP

VC++ CTreeCtrl 中 checkbox 的使用
2014-11-23 17:59:36 】 浏览:7637
Tags:CTreeCtrl checkbox 使用
1、添加 CTreeCtrl 单击响应事件,设置checkbox 的选中状态
void CTestTreeDlg::OnClickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CPoint pt;
GetCursorPos(&pt);
m_Tree_ctlDemo.ScreenToClient(&pt);
UINT nFlag = 0;
HTREEITEM hItem = m_Tree_ctlDemo.HitTest(pt, &nFlag);
if( NULL != hItem )
{
m_Tree_ctlDemo.SelectItem(hItem);
}
*pResult = 0;
}
2、遍历获取checkbox 选中的所有子节点
void CTestTreeDlg::OnOK()
{
CString str;
HTREEITEM htm;
HTREEITEM parentHtm;
HTREEITEM childHtm;
htm = m_Tree_ctlDemo.GetSelectedItem();
if (htm == NULL) return;
//获取当前选中节点的父节点
parentHtm = m_Tree_ctlDemo.GetParentItem(htm);
//获取当前选中节点的子节点
childHtm = m_Tree_ctlDemo.GetChildItem(htm);
if(parentHtm == NULL && childHtm != NULL)
{
return;
}
// 遍历所有子节点
if (m_Tree_ctlDemo.ItemHasChildren(parentHtm))
{
HTREEITEM hItem = m_Tree_ctlDemo.GetChildItem(parentHtm);
if(m_Tree_ctlDemo.GetCheck(hItem)) //判断子节点是否选中
{
str += m_Tree_ctlDemo.GetItemText(hItem) + "\r\n";
}
while (hItem != NULL)
{
m_Tree_ctlDemo.SetItemState(hItem, TVIS_BOLD, TVIS_BOLD);
hItem = m_Tree_ctlDemo.GetNextSiblingItem(hItem);
if(hItem != NULL && m_Tree_ctlDemo.GetCheck(hItem))
{
str += m_Tree_ctlDemo.GetItemText(hItem) + "\r\n";
}
}
}
AfxMessageBox(str);
}
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇打造支持加密与odbc的sqlite 下一篇CreateFile打开U盘的方法2-逻辑方..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目