想区分根节点和子节点,但实现不了,求教
根节点右键实现新建,子节点右键实现删除
谢谢!
HTREEITEM Hitem;
Hitem=m_TreeCtrl.GetSelectedItem();
if(Hitem==NULL)
{
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenu(MF_STRING,ID_NEW, "新建 ");
CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
}
else
{
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenu(MF_STRING,ID_DEL, "删除 ");
CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
}
根节点右键实现新建,子节点右键实现删除
谢谢!
HTREEITEM Hitem;
Hitem=m_TreeCtrl.GetSelectedItem();
if(Hitem==NULL)
{
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenu(MF_STRING,ID_NEW, "新建 ");
CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
}
else
{
CMenu Menu;
Menu.CreatePopupMenu();
Menu.AppendMenu(MF_STRING,ID_DEL, "删除 ");
CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
}
解决方案 »
- 关于编码转换的问题 帮忙看看 谢谢
- 变量得到问题:
- 有关directshow缓冲问题
- 请教一个CListCtrl的问题
- Dialog based project,在设计状态时建立的Menu,是否不可删除????
- CSplitterWnd的问题,窗体生成后,当窗体变化时CSplitterWnd对象该如何改变才可以使划分出来的窗体跟着变化?
- 如何知道一个动作引发了哪个函数,发送了哪个消息?
- 一个有关路径的小问题!~~
- windows api 中只有自己能写其他只可读的函数???
- ------------- 一个很有挑战性的问题!!!!! -------------
- 今天郁闷了,悲剧的XP
- 小圆绕大圆内切转动,怎样确定小圆上某一点的轨迹?
子节点就通过GetChildItem
如果没有子节点就是子节点
HTREEITEM Hitem;
Hitem=m_TreeCtrl.GetSelectedItem();
HTREEITEM hParentItem = TreeCtrl.GetParentItem(Hitem);
if (hParentItem == NULL) //为根节点
{
......
}
else //为子节点
{
......
}
我想问下5楼的 TreeCtrl
我运行的时候出现这样的问题,我用的Vc2006,这个是怎么回事?
CTreeCtrl' : illegal use of this type as an expression
error C2275: 'CTreeCtrl' : illegal use of this type as an expression
HTREEITEM hParentItem = m_TreeCtrl.GetParentItem(Hitem);
全部删除
但如果执行
if(hParentItem == NULL) 的话全部是新建
请高手看下是哪里出错了
我初始化的时候用的是TVI_ROOT,是不是有影响?
我已经弄好了
HTREEITEM Hitem;
Hitem=m_TreeCtrl.GetSelectedItem();
HTREEITEM hParentItem = m_TreeCtrl.GetParentItem(Hitem);
CMenu Menu;
Menu.CreatePopupMenu();
if(hParentItem == NULL)
{
Menu.AppendMenu(MF_STRING,ID_NEW, "新建 "); }
else
{
Menu.AppendMenu(MF_STRING,ID_DEL, "删除 ");
}
CPoint pt;
::GetCursorPos(&pt);
Menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RETURNCMD,pt.x,pt.y,this);
// NM_RCLICK消息响应函数void CXXXDlg::OnRclickTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
#define ID_MENUITEM 234
CPoint pt1, pt2;
GetCursorPos(&pt1);
pt2 = pt1; m_tree.ScreenToClient(&pt1); HTREEITEM hItem = m_tree.HitTest(pt1);
if(NULL != hItem)
{
m_tree.SelectItem(hItem);
} if(hItem)
{
CString strText(_T(""));
if(m_tree.GetRootItem() == hItem)
{
strText = _T("New");
}
else
{
strText = _T("Delete");
}
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, ID_MENUITEM, strText);
menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RETURNCMD, pt2.x, pt2.y, this);
menu.Detach();
} *pResult = 0;
}
问题解决!