我想生成一个上下文菜单,但我需要知道把它放在哪里,所以我需要当前选择的节点的坐标。
2 回答
使用CTreeCtrl::GetItemRect()
. 这将说明树节点的矩形。
您可以在 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); }
}