|
楼主 |
发表于 2014-6-12 09:28:14
|
显示全部楼层
- //显示菜单
- void CPathControlNode::ShowMenu()
- {
- //获取到屏幕坐标位置
- CRect rectNode;
- XEle_GetWndClientRect(m_hNode,&rectNode);
- CPoint ptMenu(rectNode.left + rectNode.Width() / 2,rectNode.bottom);
- ClientToScreen(XEle_GetHWnd(m_hNode),&ptMenu);
- m_bStaIsMenuOn = TRUE;
- CString strOut = m_strDirName + L"菜单的显示\n";
- OutputDebugString(strOut);
- if(m_hMenu)
- CHECK(XMenu_Popup(m_hMenu,XEle_GetHWnd(m_hNode),ptMenu.x,ptMenu.y));
- }
复制代码- //隐藏菜单
- void CPathControlNode::HideMenu()
- {
- if(m_hMenu)
- {
- CString strOut = m_strDirName + L"菜单的隐藏\n";
- OutputDebugString(strOut);
- XMenu_CloseMenu(m_hMenu);
- }
- }
复制代码- BOOL CPathControlBar::OnMouseMove(CPoint point)
- {
- ScreenToClient(m_hWndParent,&point);
- CRect rectCtrl;
- XEle_GetRect(m_hPathEle,&rectCtrl);
-
- if(rectCtrl.PtInRect(point))
- {
- XEle_PointWndClientToEle(m_hPathEle,&point);
- CPathControlNode* pathNode = HitTest(point.x,point.y);
- //成功获取到对应元素 并且此元素与上次鼠标坐标所在的元素不同
- if(pathNode && pathNode != m_pOldNode)
- {
- //隐藏掉原先元素上的菜单
- if(m_pOldNode)
- m_pOldNode->HideMenu();
- m_pOldNode = pathNode;
- //显示新的菜单
- pathNode->ShowMenu();
-
- }
- }
- return FALSE;
- }
复制代码 用鼠标钩子截获的鼠标移动消息,然后 |
|