[Help]Tree Control 右键如何弹出菜单? RT. 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CTreeCtrl的右键响应消息NM_RCLICK的处理函数中:POINT point; GetCursorPos(&point); youtreectrl.ScreenToClient(&point); CMenu menu;menu.LoadMenu(IDR_YOUR_MENU);CMenu *pPopUp=menu.GetSubMenu(0);pPopUp->TrackPopupMenu(TPM_HORIZONTAL,point.x,point.y,this); //MFC对话框工程,添加一个菜单//该菜单的ID为IDR_MENU1void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult){CMenu menu;BOOL bRet = menu.LoadMenu(IDR_MENU1);CMenu *pM = menu.GetSubMenu(0); //pM值为空CPoint pt;GetCursorPos(&pt);pM->TrackPopUpMenu(TPM_LEFTALIGN, pt.x, pt.y, this);*PResult = 0;} CMenu *pM = menu.GetSubMenu(0); //pM值为空 menu.LoadMenu(IDR_MENU1);你要确定你的资源里有IDR_MENU1这个Menu =================有的,通过Insert-->Resource-->Menu插入一个菜单BOOL bRet = menu.LoadMenu(IDR_MENU1);返回TRUE但是 CMenu *pM = menu.GetSubMenu(0); //pM值为空 你插入的菜单里有创建菜单项吗?如果没创建菜单项,GetSubMenu就会返回null了 Insert-->Resource-->Menu-->New默认生成一个Menu资源,IDR_Menu1添加菜单,系统自动生成默认的IDID_MENUITEM32722和ID_MENUITEM32723File---Open 没有选择类生成向导。 #define ID_TEST1 1001#define ID_TEST2 1002#define ID_TEST3 1003CTreeCTrl m_tree; //给Tree Control控件绑定一个变量//初始化BOOL CxxDlg::OnInitDialog(){m_tree.ModifyStyle(NULL, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);HTREEITEM hItem = m_tree.Insert("root", NULL, NULL);int i,j;CString strtmp;for (i=0; i<4; i++){HTREEITEM hSubItem = m_tree.Insert("item", NULL, NULL, hItem);for (j = 0; j <3; j++){strtmp.Format("%d %d", i, j);m_tree.Insert(strtmp, NULL, NULL, hSubItem);}}}//左键单击 Tree Control 控件void CxxDlg::OnSelectedTree1(NMHDR * pNMHDR, LRESULT * PResult){//获取已选择的节点NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;HTREEITEM hItem = m_tree.GetSelectedItem();CString strText = m_tree.GetItemText(hItem);MessageBox(strText);*PResult = 0;}//右键单击 Tree Control 控件void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult){//动态加载菜单CMenu menuSetPara;menuSetPara.CreatePopupMenu();menuSetPara.AppendMenu(MF_STRING, ID_TEST1, "新增");menuSetPara.AppendMenu(MF_STRING, ID_TEST2, "修改");menuSetPara.AppendMenu(MF_STRING, ID_TEST3, "删除");CPoint pt;GetCursorPos(&pt);menuSetPara.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);menuSetPara.DestroyMenu();//获取已选择的节点NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;HTREEITEM hItem = m_tree.GetSelectedItem();CString strText = m_tree.GetItemText(hItem);MessageBox(strText);//获取选择的菜单项目(新增/修改/删除)*PResult = 0;} 可以用:void CLeftView::OnContextMenu(CWnd* pWnd, CPoint point) 和一般的右键菜单实现没有本质区别http://apps.hi.baidu.com/share/detail/33188606 遍历最短路径问题,求帮助? 如何确定控件变量的最小值 谁给我发个最简单的VC++程序.要有完整说明语句的. Splash 问题? 手机编程 关于softice 1月29日T16广州-北京卧铺(中)火车票欲换同列至郑州票,有意者? 程序自启动时调用dll,程序启动后,不执行其功能 求助高手:云模拟相关 那位高手对boost库中regex熟悉,帮我看看代码,不知道什么老是匹配不上 V C++从服务器下载文件错误的问题(403 You don't have permission to access) listcontrol的数据能批量插入导数据中吗
GetCursorPos(&point);
youtreectrl.ScreenToClient(&point); CMenu menu;
menu.LoadMenu(IDR_YOUR_MENU);
CMenu *pPopUp=menu.GetSubMenu(0);
pPopUp->TrackPopupMenu(TPM_HORIZONTAL,point.x,point.y,this);
//该菜单的ID为IDR_MENU1
void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult)
{
CMenu menu;
BOOL bRet = menu.LoadMenu(IDR_MENU1);
CMenu *pM = menu.GetSubMenu(0); //pM值为空CPoint pt;
GetCursorPos(&pt);
pM->TrackPopUpMenu(TPM_LEFTALIGN, pt.x, pt.y, this);*PResult = 0;
}
你要确定你的资源里有IDR_MENU1这个Menu
有的,通过Insert-->Resource-->Menu插入一个菜单BOOL bRet = menu.LoadMenu(IDR_MENU1);
返回TRUE但是 CMenu *pM = menu.GetSubMenu(0); //pM值为空
如果没创建菜单项,GetSubMenu就会返回null了
ID_MENUITEM32722和ID_MENUITEM32723File
---Open 没有选择类生成向导。
#define ID_TEST2 1002
#define ID_TEST3 1003CTreeCTrl m_tree; //给Tree Control控件绑定一个变量//初始化
BOOL CxxDlg::OnInitDialog()
{
m_tree.ModifyStyle(NULL, TVS_HASBUTTONS|TVS_HASLINES|TVS_LINESATROOT);
HTREEITEM hItem = m_tree.Insert("root", NULL, NULL);
int i,j;
CString strtmp;for (i=0; i<4; i++)
{
HTREEITEM hSubItem = m_tree.Insert("item", NULL, NULL, hItem);
for (j = 0; j <3; j++)
{
strtmp.Format("%d %d", i, j);
m_tree.Insert(strtmp, NULL, NULL, hSubItem);
}
}
}//左键单击 Tree Control 控件
void CxxDlg::OnSelectedTree1(NMHDR * pNMHDR, LRESULT * PResult)
{
//获取已选择的节点
NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;
HTREEITEM hItem = m_tree.GetSelectedItem();
CString strText = m_tree.GetItemText(hItem);
MessageBox(strText);*PResult = 0;
}//右键单击 Tree Control 控件
void CxxDlg::OnRclickTree1(NMHDR * pNMHDR, LRESULT * PResult)
{
//动态加载菜单
CMenu menuSetPara;
menuSetPara.CreatePopupMenu();
menuSetPara.AppendMenu(MF_STRING, ID_TEST1, "新增");
menuSetPara.AppendMenu(MF_STRING, ID_TEST2, "修改");
menuSetPara.AppendMenu(MF_STRING, ID_TEST3, "删除");CPoint pt;
GetCursorPos(&pt);
menuSetPara.TrackPopupMenu(TPM_RIGHTBUTTON, pt.x, pt.y, this);
menuSetPara.DestroyMenu();//获取已选择的节点
NM_TREEVIEW * pTreeView = (NM_TREEVIEW *)pNMHDR;
HTREEITEM hItem = m_tree.GetSelectedItem();
CString strText = m_tree.GetItemText(hItem);
MessageBox(strText);//获取选择的菜单项目(新增/修改/删除)*PResult = 0;
}
void CLeftView::OnContextMenu(CWnd* pWnd, CPoint point)
http://apps.hi.baidu.com/share/detail/33188606