关于弹出菜单的自动弹出()

fangjl9 2014-05-20 09:54:37
我在标题栏中画了几个按钮,获取按钮矩形区域,响应之。具体响应是m_title_popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON,menuPoint.x,menuPoint.y,this);
是弹出menu的子菜单。
问题是,我想做到点击开一个按钮菜单后,在这个弹出菜单没有关闭的时候移动到另一个菜单按钮时,关闭之前打开的这个,弹出移动到的按钮菜单。
因为是画在标题栏中,所以想用ncmousemove截获,但问题是,当我菜单处于弹出状态时,我在标题栏中移动鼠标,ncmousemove消息就不响应了。mousemove也不响应,因为它对应客户区。那怎么做到呢
...全文
165 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
凌乱哥 2014-05-23
  • 打赏
  • 举报
回复
不知道CMenu有没有OnLeave消息,有的话,鼠标离开就关闭菜单就好了
fangjl9 2014-05-23
  • 打赏
  • 举报
回复
引用 5 楼 dingxz105090 的回复:
重写按钮,把鼠标在按钮上的Hover事件作为单击按钮的事件来对待,也就是 if(hover) SendMessage(BN_CLICK,0,GetDlgCtrlID()); 然后按钮的响应函数里写弹出菜单 不用去关闭之前的菜单了,因为你触发了按钮的单击命令,之前的菜单自动关闭了
我是画出的按钮,不是真正的按钮,我之前获取hover是通过NCmousemove来获取的,我的问题就是打开菜单后,NCmousemove无效了,我获取不到鼠标是否停在我画的按钮上了
阿佳夕 2014-05-20
  • 打赏
  • 举报
回复
用mouseleave()啊,鼠标一离开菜单,就关闭...
fangjl9 2014-05-20
  • 打赏
  • 举报
回复
好像跟焦点有关系,是吗?如果是,是不是可以通过设置焦点来弹出和关闭菜单呢,怎么做到
凌乱哥 2014-05-20
  • 打赏
  • 举报
回复
重写按钮,把鼠标在按钮上的Hover事件作为单击按钮的事件来对待,也就是 if(hover) SendMessage(BN_CLICK,0,GetDlgCtrlID()); 然后按钮的响应函数里写弹出菜单 不用去关闭之前的菜单了,因为你触发了按钮的单击命令,之前的菜单自动关闭了
fangjl9 2014-05-20
  • 打赏
  • 举报
回复
没人能帮个忙吗?
fangjl9 2014-05-20
  • 打赏
  • 举报
回复
引用 2 楼 yuzhenxiong0823 的回复:
用mouseleave()啊,鼠标一离开菜单,就关闭...
我想做到点击开一个按钮菜单后,在这个弹出菜单没有关闭的时候移动到另一个菜单按钮时,关闭之前打开的这个,弹出移动到的按钮菜单。 mouseleave的思路是什么?离开窗口之后怎么判断鼠标是否在另一个按钮的矩形区域呢

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧