如何获取CTreeCtrl节点的屏幕或窗口坐标?

时间:2013-09-26 15:41:10

标签: winapi mfc

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-1)

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

//在这里,我想要在鼠标右键显示菜单

void 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);

if(htItem!= NULL){

CMenu菜单;

CMenu * pContextMenu;

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

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

}