MFC学习记录-CTreeCtrl的使用

本文记录了如何在MFC中使用CTreeCtrl实现父子节点的联动选择。通过创建CTreeCheckCtrl类,解决了在设置和获取节点数据时的问题,并提供了代码示例,包括添加节点、绑定数据以及遍历树节点的方法。
摘要由CSDN通过智能技术生成

转载自:实现CTreeCtrl父子节点的联动选择
-给工程添加MFC类,继承CTreeCtrl,实现父节点与子节点的选中联动后,
类名为:CTreeCheckCtrl

-给自己的CTreeCtrl添加类变量后,在类声明中生成CTreeCtrl m_My_Tree; 修改为 CTreeCheckCtrl m_My_Tree; 就可以实现父子联动了

使用SetItemData设置节点数据后,GetItemData获取到的总是最后一个节点的数据,百度半天没解决,带佬们有啥解决方案,这里我在转载代码的基础上重写了SetItemData和GetItemData,插入以及获取的都是string类型

TreeCheckCtrl.h

#pragma once
#define UM_CHANGE_PARENT_CHECK_STATUS WM_USER+100
#include <iostream>
#include <string>
#include <map>
using namespace std;
// CTreeCheckCtrl

class CTreeCheckCtrl : public CTreeCtrl
{
   
	DECLARE_DYNAMIC(CTreeCheckCtrl)

public:
	CTreeCheckCtrl();
	virtual ~CTreeCheckCtrl();
	// 设置子结点选中状态
	void SetChildCheck(HTREEITEM hItem, BOOL bCheck);
	// 设置父结点选中状态
	void SetParentCheck(HTREEITEM hItem);
	void SetItemData(HTREEITEM hItem, std::string str);
	std::string GetItemData(HTREEITEM hItem);
	afx_msg void OnNMClick(NMHDR *pNMHDR, LRESULT *pResult);
	afx_msg LRESULT OnUserMsg(WPARAM wParam, LPARAM lParam);
protected:
	DECLARE_MESSAGE_MAP()
private:
	std::map<HTREEITEM, std::string> m_item_data;
};

TreeCheckCtrl.cpp

// TreeCheckCtrl.cpp : 实现文件
//

#include "stdafx.h"
#include "TreeTest01.h"
#include "TreeCheckCtrl.h"


// CTreeCheckCtrl

IMPLEMENT_DYNAMIC(CTreeCheckCtrl, CTreeCtrl)

CTreeCheckCtrl::CTreeCheckCtrl()
{
   

}

CTreeCheckCtrl::~CTreeCheckCtrl()
{
   
}

void CTreeCheckCtrl::SetChildCheck(HTREEITEM hItem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值