目前效果:
http://img.blog.csdn.net/20131125180003796?water/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2R1ZHViaW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEasthttp://img.blog.csdn.net/20131125180315609?water/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2R1ZHViaW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

解决方案 »

  1.   

    处理啥消息啊,搞那么复杂干嘛
    窗体或控件都提供有PopupMenu属性,把popupmenu1指定给form或者控件的Popupmenu属性就可以了,什么弹出消息都自动处理
      

  2.   

    form1.popupmenu:=popupmenu1; // 在属性面板中设置也行
    popupmenu1.trackbutton:=tbRightButton; // 就是右键弹出,根本不需要倒腾什么WM_RBUTTONUP消息之类的然后啥都不用管了,什么捕获鼠标坐标都是多余的,菜单弹出后,点击其他菜单之外的其他地方也会自动关闭popupmenu
      

  3.   

    你不就是想菜单弹出后,点击菜单之外的地方让菜单能自动关闭嘛
    这些本来就是popupmenu控件自动能完成的,你只要把popupmenu控件指定给form的popupmenu属性就得,啥都不用管
      

  4.   

    就是程序外的地方也是一样的,popupmenu一样会关闭,我试过了
      

  5.   

    你自己新建个空项目,加个popupmenu控件,什么都不用设置,直接form1.popupmenu:=popmenu1; 试试就知道了
      

  6.   

    当然得给popmenu1添加个菜单项
      

  7.   

    弹出菜单后加一行语句
    setforgroundwindow(application.handle);