当前位置:编程学习 > VB >>

VB。点击桌面空白地点,托盘菜单消失,怎么实现

我做了一个程序有托盘图标,然后对着图票点击右键出来一个菜单,但是我不点菜单,点击桌面空白地方这个菜单还在,怎么实现我点击桌面其它地方之后,这个菜单就消失,菜单名称是mnuTray --------------------编程问答-------------------- Hook鼠标的左键单击消息,单击了鼠标左键就卸载菜单即可。
http://download.csdn.net/detail/veron_04/3629729 --------------------编程问答-------------------- VB6的程序是有这个毛病:当你把鼠标移到托盘弹出右键菜单时,鼠标再移到桌面其它地方单击(包括任务栏),托盘菜单不会自动隐藏。但是,在自己的程序界面上单击一下鼠标,托盘菜单会自动隐藏。我的软件,我都没有管它了,再点一下托盘,菜单就隐藏了。
如果真要做到自动隐藏的话:可以用根据桌面句柄、任务栏句柄模拟点击一下托盘或者自己的程序界面,或者托盘区域以外的地方,让托盘菜单自动隐藏起来。
  --------------------编程问答-------------------- 在弹出菜单前将包括菜单的窗体设置为前景窗体(setForegroudWindow),就可解决楼上的问题:

If lParam = WM_RBUTTONUP Then
            SetForegroundWindow TheData.hWnd 
            TheForm.PopupMenu TheMenu '弹出菜单
else
....... --------------------编程问答--------------------
引用 3 楼 vbtoy 的回复:
在弹出菜单前将包括菜单的窗体设置为前景窗体(setForegroudWindow),就可解决楼上的问题:

If lParam = WM_RBUTTONUP Then
  SetForegroundWindow TheData.hWnd 
  TheForm.PopupMenu TheMenu '弹出菜单
else
.......

高招,测试通过。我都没想到会有这么简单的一招!! --------------------编程问答-------------------- 点菜单前一定让自己的窗口获得焦点,不然系统不会知道的

别的软件都是这样干的,点出托盘菜单时一定会让当前窗口失去焦点的.... --------------------编程问答-------------------- 我也有遇到。学习 --------------------编程问答--------------------
引用 2 楼 chenjl1031 的回复:
VB6的程序是有这个毛病:当你把鼠标移到托盘弹出右键菜单时,鼠标再移到桌面其它地方单击(包括任务栏),托盘菜单不会自动隐藏。但是,在自己的程序界面上单击一下鼠标,托盘菜单会自动隐藏。我的软件,我都没有管它了,再点一下托盘,菜单就隐藏了。
如果真要做到自动隐藏的话:可以用根据桌面句柄、任务栏句柄模拟点击一下托盘或者自己的程序界面,或者托盘区域以外的地方,让托盘菜单自动隐藏起来。
 

好厉害,但是不知道原理是什么来,有没有知道的 --------------------编程问答--------------------
引用 3 楼 VBToy 的回复:
在弹出菜单前将包括菜单的窗体设置为前景窗体(setForegroudWindow),就可解决楼上的问题:

If lParam = WM_RBUTTONUP Then
            SetForegroundWindow TheData.hWnd 
            TheForm.PopupMenu TheMenu '弹出菜单
else
.......

引用错了。。。。 --------------------编程问答-------------------- 用我包装好的 
http://www.cnblogs.com/pctgl/articles/2674446.html
补充:VB ,  API
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,