C++ CTreeCtrl 树结构 非递归读取

有时需要,非递归实现,否则不好查它的上级是哪个;

 

typedef struct ContentStruct
{
	string key;
	string value;
}PARAM_CONTENT_STRUCT;

typedef struct ParamStruct
{
	string section;
	vector<PARAM_CONTENT_STRUCT> content;
}PARAM_STRUCT;


vector<PARAM_STRUCT> m_paramList;

bool CTreeCtrlDlg::ReadTreeCtrlAllData(CTreeCtrl& _ctrl)
{
	bool ret = false;
	HTREEITEM hItem = _ctrl.GetRootItem();
	CString itmData;

	if (NULL == hItem)
	{
		return ret;
	}

	if (!_ctrl.ItemHasChildren(hItem))
	{
		return ret;
	}

	m_Rwconfig.m_paramList.clear();
	hItem = _ctrl.GetChildItem(hItem);

	do
	{
		PARAM_STRUCT param;

		itmData = _ctrl.GetItemText(hItem);
		param.section = itmData;

		if (_ctrl.ItemHasChildren(hItem))
		{
			HTREEITEM name_hItem = _ctrl.GetChildItem(hItem);
			do{

				PARAM_CONTENT_STRUCT content;
				itmData = _ctrl.GetItemText(name_hItem);
				content.key = itmData;

				if (_ctrl.ItemHasChildren(name_hItem))
				{
					HTREEITEM subhItem = _ctrl.GetChildItem(name_hItem);
					itmData = _ctrl.GetItemText(subhItem);
					content.value = itmData;
				}

				param.content.push_back(content);
			} while (name_hItem = _ctrl.GetNextSiblingItem(name_hItem));
		}
		m_Rwconfig.m_paramList.push_back(param);
	} while (hItem = _ctrl.GetNextSiblingItem(hItem));

	return true;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值