我想显示最后在树控件 mfc 中检查的项目
Posted
技术标签:
【中文标题】我想显示最后在树控件 mfc 中检查的项目【英文标题】:I want to display item lastly checked in tree control mfc 【发布时间】:2017-02-06 08:57:32 【问题描述】:我试过了
void GetCheckedItems(const CTreeCtrl& tree, CArray<HTREEITEM> *checkedItems, HTREEITEM startItem = NULL)
if (startItem == NULL)
startItem = tree.GetRootItem();`
for (HTREEITEM item = startItem; item != NULL; item = tree.GetNextItem(item, TVGN_NEXT))
// figure out if this item is checked or not
UINT state = (tree.GetItemState(item, TVIS_STATEIMAGEMASK) >> 12) & 15;
if (state == 2)
checkedItems->Add(item);
// deal with children if present
HTREEITEM child = tree.GetNextItem(item, TVGN_CHILD);
if (child != NULL)
GetCheckedItems(tree, checkedItems, child);
现在我有一个包含检查值的数组,但我怎么知道我上次检查了哪个。
【问题讨论】:
看到我的对话框上有一个树控件,其中我添加了一些节点和叶子,现在我想检索最近检查过的一个特定项目 【参考方案1】:只需对TVN_ITEMCHANGED 使用处理程序即可。每当项目状态发生变化时都会调用它。
您需要检查已更改的状态标志。您可以检测到TVIS_STATEIMAGEMASK 的更改。
【讨论】:
【参考方案2】:CString m;
HTREEITEM selItem;
selItem=m_treeRel.GetSelectedItem();
UINT uFlags = 0;
CPoint pt(0, 0);
GetCursorPos(&pt);
m_treeRel.ScreenToClient(&pt);
HTREEITEM hItem = m_treeRel.HitTest(pt, &uFlags);
if(NULL != hItem && (TVHT_ONITEM & uFlags))
/*if(selItem == hItem)
m=_T("Selected Item....");
else */
if(!m_treeRel.GetCheck(hItem))
m=m_treeRel.GetItemText(hItem);
//m_treeRel.SetCheck(hItem,true);
else
//m=_T("ERROR");
//m_treeRel.SetCheck(hItem,false);
ShowMessage(m);
*pResult = 0;
我用这个来找出上次检查了哪个项目......!
【讨论】:
以上是关于我想显示最后在树控件 mfc 中检查的项目的主要内容,如果未能解决你的问题,请参考以下文章