如何实现单击左键弹出popupmenu??我在对话框中放了一个listctrl,添加单击消息之后要弹出popupmenu
但是弹出的menu总是不能获得鼠标的坐标,而是跟随TrackPopupMenu设置的位置
下面是代码:
CMenu menu;

VERIFY(menu.LoadMenu(IDR_MENU1)); CMenu* pPopup = menu.GetSubMenu(0);
ASSERT(pPopup != NULL);
CWnd* pWndPopupOwner = this; while (pWndPopupOwner->GetStyle() & WS_CHILD)
pWndPopupOwner = pWndPopupOwner->GetParent();
pPopup->TrackPopupMenu(TPM_LEFTBUTTON|TPM_RIGHTALIGN, point.x, point.y, pWndPopupOwner);
请问高手有什么办法吗??

解决方案 »

  1.   

    void CDynaMenuView::OnLButtonDown(UINT nFlags, CPoint point)
    {
    CMenu m_NewMenu;
    m_NewMenu.LoadMenu(IDR_MAINFRAME);

    ClientToScreen(&point);
    m_NewMenu.GetSubMenu(0)->TrackPopupMenu
    (TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, 
    point.y, this);
        
    CView::OnLButtonDown(nFlags, point);
    }
      

  2.   

    那一句应该是:
    m_NewMenu.LoadMenu(IDR_MENU1);
      

  3.   

    我处理的不是OnLButtonDown哈,是listctrl的click
    void CTestDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult,CWnd* pWnd,CPoint point,UINT nFlags) 
    {
    // TODO: Add your control notification handler code here
    // CPoint point;
    CMenu menu;

    VERIFY(menu.LoadMenu(IDR_MENU1));
    ClientToScreen(&point);
    menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, point.x, point.y, this);
    // CDialog::OnNcLButtonDown(nFlags, point);
    CDialog::OnNcLButtonDblClk(nFlags, point);// *pResult = 0;
    }这样也不行,popupmenu总是出现在屏幕的最右下方,没有跟随鼠标,请问怎么办啊??
      

  4.   

    在最后加上
    CMenu* pPopup = oMenu.GetSubMenu(0);
          ASSERT(pPopup != NULL);
    CPoint oPoint;
    GetCursorPos( &oPoint );
    SetForegroundWindow();
    pPopup->TrackPopupMenu(
    TPM_LEFTALIGN | TPM_RIGHTBUTTON,
    oPoint.x, oPoint.y, this);