0

我想生成一个上下文菜单,但我需要知道把它放在哪里,所以我需要当前选择的节点的坐标。

4

2 回答 2

1

使用CTreeCtrl::GetItemRect(). 这将说明树节点的矩形。

于 2013-09-26T16:41:18.217 回答
-1

您可以在 treeclick 事件中使用“GetCursorPos”和“HitTest”方法来显示上下文菜单,如下所示。

//这里我假设你想在鼠标右键单击时显示菜单

无效 MyDialog::OnRclickTree(NMHDR* pNMHDR, LRESULT* pResult) {

CPoint CurPos;

GetCursorPos(&CurPos);

CPoint CurP=CurPos;

m_pwTree.ScreenToClient(&CurPos);// m_pwTree 是 CTreeCtrl 类的对象

UINT nFlags;

HTREEITEM htItem = m_pwTree.HitTest(CurPos, &nFlags);

如果(htItem!= NULL){

CMenu 菜单;

CMenu* pContextMenu;

menu.LoadMenu(IDR_MyMenu)//加载合适的菜单

pContextMenu=menu.GetSubMenu(0); pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,CurP.x,CurP.y,this,0); }

}

于 2013-09-27T05:06:04.277 回答