0
点赞
收藏
分享

微信扫一扫

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

小猪肥 2023-02-28 阅读 112


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

 

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 条评论