怎么对在DialogBase的TreeView控件里“动态”删除 添加结点;(+怎样在Tree控件里右键弹出菜单) 感谢。1。怎么对在DialogBase的TreeView控件里2。“动态”删除 添加结点;3。怎样在Tree控件里右键弹出菜单。有什么类或者例子? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先要新建一个类MyTree,派生自CTreeCtrl//编辑TreeCtrl的标题void MyTree::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult) { TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; // TODO: Add your control notification handler code here *pResult = 0;}void MyTree::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult) { TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR; // TODO: Add your control notification handler code here *pResult = TRUE;}//响应鼠标右键的菜单void MyTree::OnContextMenu(CWnd* pWnd, CPoint point) { UINT uFlags; CPoint ptTree = point; this->ScreenToClient(&ptTree); HTREEITEM htItem = this->HitTest(ptTree, &uFlags); if ((htItem != NULL) && (uFlags & TVHT_ONITEM)) { CMenu menu; menu.LoadMenu(IDR_TREE_POP); menu.GetSubMenu(0) ->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y,this); this->SetItemState(htItem, 0, TVIS_DROPHILITED); } if (m_pOldSel != NULL) { this->Select(m_pOldSel, TVGN_DROPHILITE); m_pOldSel = NULL; } }void MyTree::OnRButtonDown(UINT nFlags, CPoint point) { SetFocus(); UINT uFlags; HTREEITEM htItem = this->HitTest(point, &uFlags); this->SelectItem(htItem);}//插入Itemvoid MyTree::OnTreeInsert() { HTREEITEM hItem=GetSelectedItem( ), hcItem=InsertItem (_T("New Item"),2,1, hItem); Expand(hItem, TVE_EXPAND); SelectItem(hcItem); } 请问lxas(八云) ,为什么只能“双击右键”才能弹出菜单?? 有什么办法可以只是单击右键?谢谢! 在OnRButtonDown函数中不要调用基类CTreeCtrl的OnRButtonDown函数就可以不用双击了。:) TRACE宏,速答速结! LoadLibrary 调用失败 非常奇怪Stack Overflow 高分提问:这是什么加密算法? 好高兴,我的五子棋人人对弈的功能搞定了~ 一个错误 服务器没有设置事务处理"的提示,该怎么解决?可以马上结贴! DLL中SOCKET线程通信失败的问题(请高手指教,急!) 不可不看!effective火焰特效的算法 有个问题,如果用户电脑没有安装excel,我的程序里要访问excel文件,那会不会产生问题,因为用户的机子上肯定没有安装Excel驱动 数据转换问题字符到十六进制 讨论一下学习vc的经典书籍 windows2000老是出现提示
//编辑TreeCtrl的标题
void MyTree::OnBeginlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = 0;
}void MyTree::OnEndlabeledit(NMHDR* pNMHDR, LRESULT* pResult)
{
TV_DISPINFO* pTVDispInfo = (TV_DISPINFO*)pNMHDR;
// TODO: Add your control notification handler code here
*pResult = TRUE;
}//响应鼠标右键的菜单void MyTree::OnContextMenu(CWnd* pWnd, CPoint point)
{
UINT uFlags;
CPoint ptTree = point;
this->ScreenToClient(&ptTree);
HTREEITEM htItem = this->HitTest(ptTree, &uFlags); if ((htItem != NULL) && (uFlags & TVHT_ONITEM)) {
CMenu menu;
menu.LoadMenu(IDR_TREE_POP);
menu.GetSubMenu(0)
->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
point.x, point.y,this);
this->SetItemState(htItem, 0, TVIS_DROPHILITED);
} if (m_pOldSel != NULL) {
this->Select(m_pOldSel, TVGN_DROPHILITE);
m_pOldSel = NULL;
}
}void MyTree::OnRButtonDown(UINT nFlags, CPoint point)
{
SetFocus();
UINT uFlags;
HTREEITEM htItem = this->HitTest(point, &uFlags);
this->SelectItem(htItem);
}//插入Item
void MyTree::OnTreeInsert()
{
HTREEITEM hItem=GetSelectedItem( ), hcItem=InsertItem (_T("New Item"),2,1, hItem);
Expand(hItem, TVE_EXPAND);
SelectItem(hcItem);
}