我做的一个右键菜单 pMenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
一般情况下运行正常,在我单击右键的位置的右下方弹出来,但是在靠近屏幕底部的地方点击右键,也就是点击右键的位置和屏幕底部之间的高度差小于菜单的高度的时候,菜单就狂闪两下,然后就消失了怎么让菜单自动适应这种位置,当我在靠近底部的时候自动向右上方弹出?
还有怎么取得菜单的高度?

解决方案 »

  1.   

    CMenu menu;
    menu.LoadMenu(IDR_MENU1);
    CMenu* pSubMenu = menu.GetSubMenu(0);
    CPoint pt;
    GetCursorPos(&pt);
    pSubMenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
    我这么写的一段程序,在点击右下角时,菜单自动会显示到鼠标的左上方。我觉得这应该是VC自己能够处理的事情啊。你的怎么就不行呢???
      

  2.   

    你的pt.x, pt.y是桌面的坐标么?
    还是你自己的view区域的坐标
      

  3.   

    我写的程序跟happyparrot(快乐鹦鹉)一摸一样的,别的地方有问题会影响道到这里来吗?
      

  4.   

    CMenu *pMenu = (CMenu *)m_menu.GetSubMenu(0);
    POINT pt;
    GetCursorPos(&pt);pMenu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, pt.x, pt.y, this, 0);
    注:m_menu在dlg的构造函数中使用loadmenu载入菜单资源