如题。
一般的作法是:在树形控件区响应右键菜单,现在想只在选择的结点上响应右键菜单,困为选择的结点不同,菜单的内容是不同的。
一般的作法是:在树形控件区响应右键菜单,现在想只在选择的结点上响应右键菜单,困为选择的结点不同,菜单的内容是不同的。
解决方案 »
- 如何调用dll中导出的c++类?
- 请问:vc中函数可以不带括号吗?
- 感谢帖子: MSDN3000(八门金锁) 进来接分 受到了 你的书 ,谢谢分卷了 ,辛苦 1000 分酬谢(5)
- 学习vc.net中水晶报表受打击
- 如何画word中的“自选图形”那样的东西?有没有现成的类给我发一个,谢谢![email protected]
- windows socket编程中如何实现扫描一段连续的IP地址?
- 关于SOCK_STREAM | SOCK_DGRAM分别干什么用
- 本人想在一背景底图的不同位置处显示多个随数据源变化的文本(如股票显示系统),如何使这些动态文本与背景底图做到无缝。
- 谁能详细告诉我一下,什么makefile是什么?
- 一个printf输出程序内部变量的问题,请大虾帮忙
- GetPrivateProfileSectionNames使用问题?
- SOCKET 绑定问题
BEGIN_MESSAGE_MAP(CMyTreeCtrl, CTreeCtrl)
//{{AFX_MSG_MAP(CMyTreeCtrl)
ON_NOTIFY_REFLECT(NM_RCLICK, OnRClick)
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()void CMyTreeCtrl::OnRClick(NMHDR* pNMHDR, LRESULT* pResult)
{
TRACE0("CMyTreeCtrl::OnRClick()\n");
// Send WM_CONTEXTMENU to self
SendMessage(WM_CONTEXTMENU, (WPARAM) m_hWnd, GetMessagePos());
// Mark message as handled and suppress default handling
*pResult = 1;
}void CMyTreeCtrl::OnContextMenu(CWnd* pWnd, CPoint ptMousePos)
{
// if Shift-F10
if (ptMousePos.x == -1 && ptMousePos.y == -1)
ptMousePos = (CPoint) GetMessagePos(); ScreenToClient(&ptMousePos); UINT uFlags;
HTREEITEM htItem;
htItem = HitTest( ptMousePos, &uFlags ); if( htItem == NULL )
return;
m_hActiveItem = htItem; CMenu menu,menu2;
CMenu* pPopup,pPopup2;
// the font popup is stored in a resource
menu.LoadMenu(IDR_TREEITEM_CONTEXTMENU);//菜单1
pPopup = menu.GetSubMenu(0);
menu2.LoadMenu(IDR_TREEITEM_CONTEXT);//菜单2
pPopup2 = menu.GetSubMenu(0); ClientToScreen(&ptMousePos);
//判断鼠标点击的节点
//这里控制室pPopup->TrackPopupMenu还是pPopup2->TrackPopupMenu
//pPopup->TrackPopupMenu( TPM_LEFTALIGN, ptMousePos.x, ptMousePos.y, this );
}